为什么在使用while循环数组时会出现执行错误?c#
当运行下面的代码时为什么在使用while循环数组时会出现执行错误?c#,c#,arrays,while-loop,C#,Arrays,While Loop,当运行下面的代码时 int [] a = {1,2,3,4,5}; int i = -1; while (i < a.Length) { i++; Console.Write(a[i]); } int[]a={1,2,3,4,5}; int i=-1; while(i
int [] a = {1,2,3,4,5};
int i = -1;
while (i < a.Length)
{
i++;
Console.Write(a[i]);
}
int[]a={1,2,3,4,5};
int i=-1;
while(i
我得到这个错误:IndexOutOfRangeException未处理
ConsoleApplication2.exe中发生类型为“System.IndexOutOfRangeException”的未处理异常
附加信息:索引超出了数组的界限。您会收到一个错误,因为当
i==4
您将数字增加1,然后尝试访问一个无效元素a[5]
。因为您在使用它之前增加了i
。当i
为4时,它通过while循环中的检查,然后递增到超出范围的5。在访问数组之前递增循环变量。在这种情况下,必须从长度中减去一,以防止出现越界情况:
while (i < a.Length - 1)
{
i++;
Console.Write(a[i]);
}
while(i
更好的做法是以最小值开始索引,并在数组访问后递增。这将使您的代码更具可读性和可维护性:
int i = 0;
while (i < a.Length)
{
Console.Write(a[i]);
i++;
}
inti=0;
while(i