为什么使用 while 遍历数组时出现执行错误?c#.

本文关键字:执行 错误 while 遍历 数组 为什么 | 更新日期: 2023-09-27 18:34:53

运行时运行下面的代码

int [] a = {1,2,3,4,5};
int i = -1;
while (i < a.Length)  
{
i++; 
Console.Write(a[i]);
}

我收到此错误:索引超出范围异常未处理

控制台应用程序 2 中发生类型为"System.IndexOutOfRangeException"的未处理异常.exe

其他信息:索引超出数组边界。

为什么使用 while 遍历数组时出现执行错误?c#.

您会收到一个错误,因为当i == 4时,您将数字增加 1,然后尝试访问 a[5] ,这是无效元素。

因为在使用它之前递增i。当i为 4 时,它会通过 while 循环中的检查,然后递增到 5,这超出了范围。

在访问数组之前,您正在递增循环变量。 在这种情况下,您必须从长度中减去一个以防止越界情况:

while (i < a.Length - 1)   
{
  i++; 
  Console.Write(a[i]);
}

更好的做法是从最小值开始索引,并在数组访问递增。 这将使您的代码更具可读性和可维护性:

int i = 0;
while (i < a.Length)   
{
  Console.Write(a[i]);
  i++; 
}