我是C#的新手,所以这个问题可能很简单。但是我还没有找到任何解决方案。
问题描述:
我想创建并清空列表的数组[4] [长度不知道]。稍后我将读出四个不同的通道,并用预先创建的对象填充列表。
到目前为止我做了什么
class objChannel
{
private int channel;
public objChannel(int inputChannel)
{
channel = inputChannel;
}
public int Channel {get {return channel;}}
}
List<objChannel>[] listChannel = new List<objChannel>[4];
listChannel[1].Add(objChannel(1));
由于 null 错误,这不起作用。
现在我有这样的解决办法:
List<objChannel>[] listChannel = {new List<objChannel> { new objChannel(1) },
new List<objChannel> { new objChannel(2) },
new List<objChannel> { new objChannel(3) },
new List<objChannel> { new objChannel(4) }};
但是,这会给我非空列表。
答案 0 :(得分:3)
初始化列表数组时,还需要创建空列表 像:
List<objChannel>[] listChannel = {new List<objChannel>(), new List<objChannel>(), new List<objChannel> (), new List<objChannel> ()};
或
for(int i = 0; i<4; i++)
{
listChannel[i] = new List<objChannel>();
}
答案 1 :(得分:2)
您的第一个代码失败的原因是您必须实例化listChannel[1]
,然后您只能调用实例方法,如:
listChannel[1] = new List<objChannel>();
listChannel[1].Add(new objChannel(1));
要注意的另一点是数组索引以0
开头,而不是1
。 (虽然不确定问题中的用法是否是故意的)。