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

本文关键字:初始化 列表 集合 | 更新日期: 2023-09-27 17:58:05

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

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

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

有人可以向我解释如何声明两个动态列表并填充苍蝇作为我的例子吗? 将列表放入列表中

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

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

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

在使用索引之前,需要先调用 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));

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)
});

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

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

List<T>Array是不一样的。调用instanceOfList[index]时,调用索引器。如果索引器无法在index找到元素,则会抛出ArgumentOutOfRangeException.