使用c#将元素插入数组

时间:2017-07-09 13:40:08

标签: c# arrays insertion indexoutofrangeexception

        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。

3 个答案:

答案 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]