多维数组对象引用未设置为对象的实例

时间:2017-10-12 04:12:27

标签: c# arrays visual-studio multidimensional-array

我正在学习如何进行多维数组,并且在尝试填充数组时遇到此引用错误。有人有什么想法吗?

 public static string[][] itemLines;


    public static void readTxtFile()
    {
        try
        {
            string[] lines = new string[420];

            using (StreamReader sr = new StreamReader(TextFileDirectory.fileDirectoryThree))
            {
                int counter = 0;
                while (!sr.EndOfStream)
                {
                    lines[counter] = sr.ReadLine(); //All lines are in an array index
                    counter++;
                }
            }

            for (var i = 0; i < lines.Length; i++)
            {
                itemLines[i] = lines[i].Split('Ü'); //All lines are in multiplexed array
                Console.WriteLine("Line " + i + "'s first value is: " + itemLines[i][0]);         
            }

            }
        }      
        catch (Exception e)
        {
            MessageBox.Show(e.ToString());
        }
    }

这是踢我的屁股。我似乎无法解决这个问题。

编辑:我找到了答案。我必须有一个计数器变量并用它正确地声明数组。

2 个答案:

答案 0 :(得分:1)

数组是一个对象。所有对象都需要初始化。您在开始public static string[][] itemLines创建的对象从未初始化。您已经创建了一个二维数组,它是一个数组数组。 itemLines[i] = ..访问数组i对象的itemLines元素(同样是数组数组)。换句话说,你所做的就是这个:

int[] i;
i[0] = 8;

以上操作无效,因为我从未初始化过。

样本初始化:

string[][] myArr = new string[9][];
string[][] myArr2 = new string[9][8];

答案 1 :(得分:-1)

首先需要初始化数组

itemLines=new string[10][];

然后这个错误就会消失

你也会在这一行得到错误

Console.WriteLine("Line " + i + "'s first value is: " + itemLines[i][0]);

如果先前的语句没有要分割的数据,则itemLines [i] [0]将为null,要解决此问题,请使用if语句检查特定节点上是否有元素

if(itemLines[i]!=null && itemLines[i].Length>0)
Console.WriteLine("Line " + i + "'s first value is: " + itemLines[i][0]);