int[] arr = {4,3,6,7,9,12};
int n = arr.Length;
n = n + 1;
for (int i =n;i>2;i--) {
arr[i-1] = arr[i-2];
}
arr[0] = 4;
上面的代码返回
indexOutOfRangeexception。
答案 0 :(得分:1)
int n = arr.Length //n=6
n=n+1 //n=7
for(int i=n;i>2;i--){ //i=7
arr[i-1] //arr[6]
虽然显然最后一个元素是arr [5]。 在C#数组长度不变的情况下,您无法更改它们,唯一的方法是创建一个新数组,或者更好的解决方案是使用List<>
答案 1 :(得分:0)
当然会因为这些而
n = n + 1; // n = 7
for (int i =n;i>2;i--) { //Assining 7 to i
arr[i-1] = arr[i-2]; // trying to access arr[6] which is not valid
答案 2 :(得分:0)
您的数组从0开始为Length
6。
在for
循环中,我变为7且arr[7-1] = arr[6]
超出范围,最大值为arr[5]
,即:
arr[0]
arr[1]
arr[2]
arr[3]
arr[4]
arr[5]