我正在学习如何进行多维数组,并且在尝试填充数组时遇到此引用错误。有人有什么想法吗?
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());
}
}
这是踢我的屁股。我似乎无法解决这个问题。
编辑:我找到了答案。我必须有一个计数器变量并用它正确地声明数组。
答案 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]);