0

我正在努力在菜单中显示音频输入设备列表,而且我对 C# 还很陌生。输入设备的数量不仅因机器而异,而且在程序运行时有人可能会添加或减去 USB 设备。我编写了在菜单被激活时检查的代码,但我必须限制可能的输入设备的数量。输入设备不太可能超过 10 个,但是,为了更好地理解 C#,我想看看是否可以使用泛型,这样我就不必限制列表。

这是我现在要做的代码:

MainMenu sgFileMenu = new MainMenu(); 
List<MenuItem> inputDevice = new List<MenuItem>();

MenuItem myMenuItemInput = new MenuItem("&Input Devices");
sgFileMenu.MenuItems.Add(myMenuItemInput);

for (int i = 0; i < deviceCount; i++)
{
    myMenuItemInput.MenuItems.Add(inputDevice[i]);
}

编译但在我运行它时会给出 ArgumentOutOfRange 异常。我显然错过了一些关于如何设置泛型的东西——有人能告诉我吗?

在阅读了一些评论后添加 - deviceCount 是一个整数,而不是 0 - 在其他地方检查过。似乎很明显我需要先做一些事情:

    myMenuItemInput.MenuItems.Add(inputDevice[i]);

但我不确定那是什么。

4

2 回答 2

2

试试这个:

for (int i = 0; i < inputDevice.Count; i++)
{
    myMenuItemInput.MenuItems.Add(inputDevice[i]);
}

无论如何,你已经初始化inputDevice为一个空列表,所以它不包含任何MenuItem.

于 2013-09-04T00:47:59.990 回答
0

这与泛型无关。我猜deviceCount是 0 以外的某个数字。由于您初始化inputDevice但从未实际添加任何内容,因此它保持为空,并inputDevice[i]会引发该异常。

于 2013-09-04T00:47:22.397 回答