为什么我在使用while循环数组时遇到执行错误? C#

时间:2014-12-20 20:54:12

标签: c# arrays while-loop

运行下面的代码时

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

其他信息:索引超出了数组的范围。

3 个答案:

答案 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++; 
}