在c#?</int>中声明并访问List <int> [] []

时间:2015-04-07 22:02:20

标签: c# .net

我已声明如下:

List<int>[][] main=new List<int>[4][];

main[0]=new List<int>[3];

我收到错误“对象引用未设置为对象的实例”,如果我尝试使用以下语句添加元素:

main[0][0].add(3);

请告诉我这个陈述和等同的正确陈述有什么问题?

2 个答案:

答案 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