Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么在使用while循环数组时会出现执行错误?c#_C#_Arrays_While Loop - Fatal编程技术网

为什么在使用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