【发布时间】:2020-01-23 21:36:45
【问题描述】:
尝试在 C# 中构建结构列表数组。并通过最佳尝试获得 System.NullReferenceException(test[i].Add(info1); 行错误)
问题根本不是如何避免System.NullReferenceException,而更像是如何快速构建具有预定义数组大小的列表数组,从而能够使用@ 987654323@ 在里面。如果可能不循环整个数组,只需创建列表。
所以这些是要求:
- 数组的大小应该是预定义的;
- 每个节点的列表数量应该是任意的,并且应该有可能很容易添加这些列表;
- 结构应包含
struct Info。
这是我到目前为止管理的代码(复制和粘贴应该可以复制错误):
using System.Collections.Generic;
class Startup
{
static void Main()
{
int entry = 1233;
List<Info>[] test = new List<Info>[entry];
for (int i = 0; i < 500 ; i+=3)
{
Info info1 = new Info()
{
capacity = i * 2,
name = i.ToString()
};
test[i].Add(info1);
}
for (int i = 0; i < 1000; i+=5)
{
Info info2 = new Info();
info2.capacity = i * 2;
info2.name = i.ToString() + i.ToString();
test[i].Add(info2);
}
}
struct Info
{
public int capacity;
public string name;
}
}
【问题讨论】:
-
您只初始化了整个数组,而不是其中的列表。
-
@BrootsWaymb - 有没有比在循环前添加
for (int i = 0; i < test.Length; i++) { test[i] = new List<Info>();}更快的方法? -
test[i] = new List
{info1}; -
@Vityata,请查看我的回答中的编辑。每个 3 的倍数有 1 个列表,每个 5 的倍数有 1 个列表,每个 3 和 5 的倍数有 2 个列表。