我正在遍历字符串列表(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'循环访问数组并打印其内容工作正常,所以我不确定为什么通过直接指定索引来访问数组不起作用?
答案 0 :(得分:3)
这没用:
string[] myArray = new string[4];
因为这会抛弃你的阵列:
myArray = procedure.Split(',');
您的问题是其中一个storedProcedures
没有逗号。
答案 1 :(得分:1)
Console.WriteLine(myArray.Length)
显示什么?你以4的大小开始数组,但procedure.Split(',')
为你提供了一个新的数组,其中只有一个元素。
答案 2 :(得分: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]);
}