问题描述
我想用 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();