运行下面的代码时
int [] a = {1,2,3,4,5};
int i = -1;
while (i < a.Length)
{
i++;
Console.Write(a[i]);
}
我收到此错误:IndexOutOfRangeException未处理
未处理的类型&#39; System.IndexOutOfRangeException&#39;发生在ConsoleApplication2.exe
中其他信息:索引超出了数组的范围。
答案 0 :(得分:2)
您收到错误,因为i == 4
时您将数字增加1,然后尝试访问a[5]
,这是无效元素。
答案 1 :(得分:0)
因为在使用之前增加i
。当i
为4时,它会在你的while循环中通过检查,然后递增到5,这超出了范围。
答案 2 :(得分:0)
在访问数组之前,您正在递增循环变量。在这种情况下,您必须从长度中减去一个以防止越界条件:
while (i < a.Length - 1)
{
i++;
Console.Write(a[i]);
}
更好的做法是以最小值启动索引,并在数组访问后递增。这将使您的代码更具可读性和可维护性:
int i = 0;
while (i < a.Length)
{
Console.Write(a[i]);
i++;
}