我正在努力在菜单中显示音频输入设备列表,而且我对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]);
但我不确定那是什么。
答案 0 :(得分:2)
试试这个:
for (int i = 0; i < inputDevice.Count; i++)
{
myMenuItemInput.MenuItems.Add(inputDevice[i]);
}
无论如何,您已将inputDevice
初始化为空列表,因此它不包含任何MenuItem
。
答案 1 :(得分:0)
这与泛型无关。我猜deviceCount
是除了0以外的一些数字。因为你初始化inputDevice
但从未实际添加任何内容,它会保持为空,inputDevice[i]
将抛出该异常。< / p>