为什么使用 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
其他信息:索引超出数组边界。
您会收到一个错误,因为当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++;
}