使用 Initialize 方法初始化 List<int> 数组的问题

问题描述

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

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

我遍历集合并初始化时没问题,但为什么Initialize()方法有问题?

解决方法

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

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

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

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

var myArray = new int[n];

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

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