0

如何将项目添加到List<>数组的成员?
请看下面的例子:

List<string>[] array_of_lists = new List<string>[10];
array_of_lists[1].Add("some text here");

但有以下错误:

你调用的对象是空的。

这个错误是什么意思,我该如何解决?

4

5 回答 5

7

您已经初始化了数组,但所有元素都null还没有。如果你想用List<String>给定索引处的 a 初始化它,你不能使用Addwhich 是List<T>.

通过这种方式,您可以在第二个元素处初始化数组:

array_of_lists[1] = new List<string>{"some text here"};

另请注意,索引以 0 开头,而不是 1。

这是一个demonstration.

于 2013-10-11T11:07:31.000 回答
1

我认为你混合List<T>数组

MSDN

该类List<T>是 ArrayList 类的通用等价物。它使用一个数组来实现IList<T>通用接口,该数组的大小根据需要动态增加。

所以,你可以很容易地写,

List<string> array_of_lists = new List<string>();
array_of_lists.Add("some text here");
于 2013-10-11T11:05:40.490 回答
1

问题是当你初始化一个数组时,它是用项目的默认值创建的。对于大多数值类型(int、float、vs...),默认值为 0。对于引用类型(字符串和可为空以及 List 等),默认值为 null。

所以你的代码应该是这样的

List<string>[] list_lines_link_scanner_ar = new List<string>[int.Parse(txt_ParaCount_In_LinkScanner.Text)];

// this is the line -->
list_lines_link_scanner_ar[1] = new new List<string>();
//  <----
list_lines_link_scanner_ar[1].Add("some text here");
于 2013-10-11T11:09:25.027 回答
1

经过这么多的编辑,更改和评论的答案,我想为您提供一个完整的解决方案:

List<string>[] array_of_lists = new List<string>[10];
for (int i = 0; i < array_of_lists.Length; i++) {
    array_of_lists[i] = new List<string>();
    array_of_lists[i].Add("some text here");
    array_of_lists[i].Add("some other text here");
    array_of_lists[i].Add("and so on");
}
于 2013-10-11T11:48:45.003 回答
-1

宣布:

List<List<string>> listOfList = new List<List<string>>();

添加:

listOfList.Add(new List<string> { "s1", "s2", "s3" });

除非你真的需要一个数组。

于 2013-10-11T11:03:15.307 回答