1

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

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

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

4 回答 4

7

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

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

listInstance.Add(new List<Classes.instancedModel>()); <--- YES!!
于 2013-02-07T14:38:29.493 回答
1

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

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

List<T>并且Array不一样。当你打电话时,你打电话instanceOfList[index]indexer。如果索引器将无法找到元素,index则会抛出 ArgumentOutOfRangeException.

于 2013-02-07T14:38:17.937 回答
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));
于 2013-02-07T14:38:57.730 回答
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)
});
于 2013-02-07T14:42:15.843 回答