索引超出范围异常的数组

时间:2015-12-03 12:18:51

标签: c#

我试图反转数组。这是我的代码:

using System;

class Hello
{
    static void Main()
    {
        int[] num  = new int[] { 1, 2, 3, 4, 5 };
        int index = num.Length - 1;
        int[] newNum = new int[index];

        for (int i = 0; i < num.Length; i++)
        {
            newNum[i] = num[index];  // error     
            index--;        
            Console.WriteLine(newNum[i]);
        }
        Console.ReadLine();
    }
}

当我运行代码时,控制台会打印

5
4
3
2

然后返回错误:

  

IndexOutOfRangeException未处理

就行:

newNum[i] = num[index];

这行代码有什么问题?当我在for循环之前打印num[0]时,它可以正常工作。

1 个答案:

答案 0 :(得分:0)

你的新数组的长度为4.这意味着我将覆盖0到3

int[] newNum = new int[index];

并且你的循环将变为i = 4

当我将4你的代码将崩溃。因为newNum仅支持第3个索引。

这应该是

int[] newNum = new int[index+1];