2016-06-14 136 views
0

我是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)); 

这并不是因为错误的工作。

现在我有一个变通这样的:

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

首先你必须实例化'listChannel [1]',然后你可以调用实例方法'Add'。 – Habib

+0

你想要一个'objChannel'的_single_容器,或者你想要'objChannel'的containers_容器_容器? –

回答

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>(); 
} 
+0

有没有更少的代码可以做到这一点?我必须做一个类似的事情,它有17个objChannels。我想避免经常写'新列表()'。 – paj

+0

是的,在创建listChannel数组后,使用for循环创建新的列表对象,请参阅更新的答案 –

+0

谢谢。我以为有一些我还不知道的密码。似乎是,我只需要做'for循环'或'while'的方式。 – paj

1

你的第一个代码失败的原因是因为你必须实例化listChannel[1],然后您只能调用实例方法,如:

listChannel[1] = new List<objChannel>(); 
listChannel[1].Add(new objChannel(1)); 

另一点需要注意的是,数组索引以0开头,而不是1(虽然不确定在问题中使用的是否是有意的)

+0

感谢@Habib的快速回复。这样可行。现在我有以下'列表 [] listChannel =新列表 [4]; listChannel [0] =新列表(); listChannel [1] =新列表(); listChannel [2] =新列表(); listChannel [3] =新列表();' – paj