【问题标题】:Unable to initialize a list collection in c #?无法在 C# 中初始化列表集合?
【发布时间】:2013-01-23 02:24:30
【问题描述】:

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

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

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

有人可以向我解释如何声明两个动态列表并填充苍蝇作为我的例子吗?用一个列表变成一个列表

【问题讨论】:

  • 该错误消息来自哪一行?
  • 目前看来还可以。看看instancesModel 类的构造函数。

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


【解决方案1】:

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

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

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

【讨论】:

  • 如此明显。隐藏得这么好。发现得好! ;)
  • 非常感谢!抱歉这个问题太明显了。我用你的第一个答案来解决我的问题。
  • @MehdiBugnard 没问题! :)
【解决方案2】:

在使用索引之前需要先调用 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】:

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

    【讨论】:

      【解决方案4】:

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

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

      List&lt;T&gt;Array 不一样。当您拨打instanceOfList[index] 时,您拨打indexer。如果索引器在index 处找不到元素,则会抛出ArgumentOutOfRangeException

      【讨论】:

      • 完美!非常感谢您的解释。我把它作为你的解释高级^ ^
      猜你喜欢
      • 2017-08-30
      • 2011-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-04
      • 1970-01-01
      • 2023-03-18
      • 2014-12-19
      相关资源
      最近更新 更多