C# 数组上的索引超出范围异常

C# 数组上的索引超出范围异常,c#,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++)

我正在尝试反转数组。这是我的代码:

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();
    }
}
然后返回一个错误:

IndexOutOfRangeException未处理

在线:

newNum[i] = num[index];

那行代码怎么了?当我在for循环之前打印
num[0]
时,它工作正常。

新数组的长度是4。这意味着我会从0到3

int[] newNum = new int[index];
你的循环将是i=4

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

这应该是

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

是的,您的
newNum
数组比
num
数组小一个元素,但是您的循环被编写为与
num
长度相同。为什么要这样做?为什么不使用枚举。反向@克罗西:请不要删除相关代码。必须使用
系统
命名空间的
使用
指令才能编译此代码。Thanks@JonSkeet哦,对不起,我弄错了。不会再发生了。
int[] newNum = new int[index+1];