我已声明如下:
List<int>[][] main=new List<int>[4][];
main[0]=new List<int>[3];
我收到错误“对象引用未设置为对象的实例”,如果我尝试使用以下语句添加元素:
main[0][0].add(3);
请告诉我这个陈述和等同的正确陈述有什么问题?
答案 0 :(得分:5)
此指令main[0]=new List<int>[3];
将创建一个大小为3的List类型的对象,并将在该堆上为该对象分配必要的空间,但它不会实例化每个元素。每个元素的默认值等于null
因此main[0][0].add(3);
是尝试在null对象上调用add。您应该在此行之前使用:main[0][0] = new List<int>();
答案 1 :(得分:0)
您已经省略了初始化其中一个维度的步骤。第一个是main[0]=new List<int>[3];
,但您还需要main[0][0] = new List<int>();
所以这样的事情应该这样做;
List<int>[][] main = new List<int>[3][];
main[0] = new List<int>[3];
main[0][0] = new List<int>();
main[0][0].Add(1000);
Console.WriteLine(main[0][0].FirstOrDefault()); // 1000