0

我正在遍历一个字符串列表(storedProcedures)并将每个列表项拆分为一个数组。然后我想使用特定索引访问数组元素。一旦我尝试访问数组的第二个元素,我就会得到一个超出范围的异常。

string[] myArray = new string[4];
foreach (string procedure in storedProcedures)
{
    myArray = procedure.Split(',');

    foreach (string index in myArray)
    {
        Console.WriteLine(index);
    }

    for (int i = 0; i < myArray.Length; i++)
    {
        Console.WriteLine(myArray[i]);
    }

    Console.WriteLine(myArray[0]);
    Console.WriteLine(myArray[1]);  <---- out of range exception here
    Console.WriteLine(myArray[2]);
    Console.WriteLine(myArray[3]);
}

使用“foreach”和“for”循环访问数组并打印其内容工作正常,所以我不确定为什么通过直接指定索引来访问数组不起作用?

4

3 回答 3

3

这是没用的:

string[] myArray = new string[4];

因为这会把你的数组扔掉:

myArray = procedure.Split(',');

您的问题是其中一个storedProcedures没有逗号。

于 2013-01-16T02:42:32.763 回答
1

显示什么Console.WriteLine(myArray.Length)?您以 4 的大小开始数组,但procedure.Split(',')给了您一个新数组,其中可能只有一个元素。

于 2013-01-16T02:40:23.920 回答
1

可能您的拆分数组比预期的要短。在从数组中检索值之前,您应该始终检查长度。也许缺少一些逗号,也许你的字符串格式不正确......更好地调试它,如下所示:

foreach (String procedure in storedProcedures)
{
    Console.WriteLine("Current Procedure: \"" + procedure + "\"");

    String[] split = procedure.Split(',');

    Console.WriteLine("Split Length: " + split.Length.ToString());

    for (int i = 0; i < myArray.Length; i++)
        Console.WriteLine(i.ToString() + ") " + split[i]);
}
于 2013-01-16T03:03:57.253 回答