C# 为什么我的数组抛出超出范围的异常错误?

C# 为什么我的数组抛出超出范围的异常错误?,c#,arrays,C#,Arrays,为什么下面的代码会引发异常 for (int i = 0; i <= Items.Length-1; i++) { Console.WriteLine(Items[i,1]); } 项目申报: 获取字符串数组的函数: static string[,] ReadFromFile(string filename, int rowsF) { StreamReader SR; string S; string[] S_split; SR = File.O

为什么下面的代码会引发异常

for (int i = 0; i <= Items.Length-1; i++)
{
    Console.WriteLine(Items[i,1]);
}
项目申报:

获取字符串数组的函数:

static string[,] ReadFromFile(string filename, int rowsF)
{
    StreamReader SR;
    string S;
    string[] S_split;

    SR = File.OpenText(filename);
    S = SR.ReadLine();

    string[,] myItems = new String[rowsF, 2];
    int row_number = 0;
    while (S != null)
    {
        S_split = S.Split('"');
        //temp_items[row_number,0] = 
        myItems[row_number,0] = S_split[1];
        myItems[row_number,1] = S_split[2];

        row_number++;
        S = SR.ReadLine();
    }
    SR.Close();
    return myItems;
}

string[,] Items = ReadFromFile(myFile, rowsF);

你有一个直的二维数组。Length为您提供了数组中的索引,但您使用它来计算单个维度的索引。你想要的是:

for (int i = 0; i < Items.GetLength(0); i++)
{
    Console.WriteLine(Items[i,1]);
}
for(int i=0;i
您有一个直接的二维数组。Length为您提供了数组中的索引,但您使用它来计算单个维度的索引。你想要的是:

for (int i = 0; i < Items.GetLength(0); i++)
{
    Console.WriteLine(Items[i,1]);
}
for(int i=0;i
检查项目的长度[i]。它看起来是一个2D数组,显然不是空的,因为你会得到一个不同的异常,所以它可能只是Items[i]处的一个空数组,或者只包含一个item

检查:

Items[i] == null
Items[i].Length > 0

编辑:您的附加代码有帮助。当您拆分字符串以初始化项时,对于给您带来麻烦的项,请检查索引1中存储的内容。除此之外,我看不出有什么问题。

检查项目的长度[I]。它看起来是一个2D数组,显然不是空的,因为你会得到一个不同的异常,所以它可能只是Items[i]处的一个空数组,或者只包含一个item

检查:

Items[i] == null
Items[i].Length > 0

编辑:您的附加代码有帮助。当您拆分字符串以初始化项时,对于给您带来麻烦的项,请检查索引1中存储的内容。除此之外,我看不出它有什么问题。

它引发了一个异常,因为
Items[I]。Length
是<2


在尝试访问
项[i,1]
之前,需要检查
(项[i].Length>=2)
,因为
项[i].Length
为<2,所以它会引发异常


在尝试访问
项[i,1]
之前,您需要检查
(项[i].Length>=2)
,据我所见,其中一行很可能不符合您所需的格式。看起来您是在根据引号(“)定界检索文本,S_split[]可能并不总是有那么多字段


例如,文件末尾的空行将触发异常。

据我所见,其中一行很可能不符合您所需的格式。看起来您是在根据引号(“)定界检索文本,而s_split[]可能并不总是具有这些字段数

例如,文件末尾的空行将触发异常

是否确实不希望使用S_分割[0]&S_分割[1]

应该看到输入文件

是否确实不希望使用S_分割[0]&S_分割[1]


应该可以看到输入文件。

数组声明是什么样子的?你能包括项目声明吗?我在postline 119 is(Console.WriteLine)中添加了一些内容?如果足够短,我们能看到输入文件吗?数组声明是什么样子的?你能包括项的声明吗?我在postline 119 is(Console.WriteLine)中添加了一些东西?如果足够短,我们能看到输入文件吗?数组中有两列。数组中有两列。我真的不明白你在这里的意思。。什么“项目”?抱歉,是项目(您拥有的2d数组)第二维度足够大,是第一维度索引给出了异常。Items.GetLength(0)