无法在c#中初始化列表集合?

时间:2013-02-07 14:35:50

标签: c# .net arrays list multidimensional-array

您好我不知道为什么我不可能完成之前声明的对象集合。

这是我的声明列表中的对象列表。(我想将对象列表存储在引用列表中):

private List<List<Classes.instancedModel>> listInstance;

我在构造函数中初始化

listInstance = new List<List<Classes.instancedModel>>();

我在循环完成列表之前初始化列表的第一个数组,但我不能......

listInstance[0] = new List<Classes.instancedModel>();
listInstance[0].Add(new instancedModel(1, position_model_origin, new Vector3(0, 0, 0), 1, Game));

但我会抛出类型的异常: ArgumentOutOfRangeException

有人可以向我解释如何声明两个动态列表并填充飞行作为我的示例吗?列表中的列表

4 个答案:

答案 0 :(得分:7)

列表不是数组。除非至少有一个项目,否则您无法使用索引器进行访问。

listInstance[0] = new List<Classes.instancedModel>(); <--- NO!!

listInstance.Add(new List<Classes.instancedModel>()); <--- YES!!

答案 1 :(得分:1)

您真正想要的是将项目添加到列表中:

listInstance.Add(new List<Classes.instancedModel>()); //listInstance is List not an array

List<T>Array不一样。当您致电instanceOfList[index]时,请致电indexer。如果索引器无法在index找到元素,则会抛出ArgumentOutOfRangeException

答案 2 :(得分:1)

在使用索引之前,您需要先调用Add方法:

private List<List<instancedModel>> listInstance;
listInstance = new List<List<instancedModel>>();

listInstance.Add(new List<Classes.instancedModel>());

listInstance[0].Add(new instancedModel(1, position_model_origin, new Vector3(0, 0, 0), 1, Game));

答案 3 :(得分:1)

listInstance [0]在您创建之前不存在 - 您只创建了列表,但没有添加任何内容。

var listInstance = new List<List<instancedModel>>();

listInstance.Add(new List<instancedModel> {
    new instancedModel(1, position_model_origin, new Vector3(0, 0, 0), 1, Game)
});