【问题标题】:Problem with initializing an array of List<int> with Initialize method使用 Initialize 方法初始化 List<int> 数组的问题
【发布时间】:2021-01-05 17:23:22
【问题描述】:

我想用List&lt;int&gt; 的数组实现一个图形,但是当我尝试使用默认值(通过调用List&lt;int&gt; 的无参数构造函数)初始化带有Array.Initialize() 的条目时,就像方法是从未调用过,之后所有条目仍然是null

int n = int.Parse(Console.ReadLine()); // number of nodes 
List<int>[] g = new List<int>[n]; //graph
g.Initialize();

我遍历集合并初始化的时候还好,但是为什么Initialize()的方法有问题呢?

【问题讨论】:

  • List&lt;T&gt;[] 是一个数组,这就是他在代码中所写的。你能进一步解释一下你在说什么吗?
  • @Blindy 你说得对,我是瞎子,那其实是 List 的数组。

标签: c# array-initialization


【解决方案1】:

永远不要使用Array.Initialize。阅读该函数的文档,它有一整页的警告,包括一个巨大的红色警告框。

而是像初始化其他数组一样初始化您的数组:

for(int i = 0; i < g.Count; ++i)
    g[i] = new();

【讨论】:

    【解决方案2】:

    您应该将数据类型更改为 int[]=>

    var myArray = new int[n];
    

    或者如果您出于任何原因需要列表,您可以如下所示对其进行初始化=>

    var defaultValue=65;
    var myListWithDefaultValue = Enumerable.Repeat(defaultValue, n).ToList();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-13
      • 2012-11-10
      • 2014-03-16
      • 2022-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多