C# 为什么这种反向数组方法不起作用?

C# 为什么这种反向数组方法不起作用?,c#,arrays,reverse,C#,Arrays,Reverse,我正在尝试一种方法来反转数组,我不知道为什么它不起作用 当我说int[]arr=array时,我想这样做,这样它就不会受到影响,所以我可以使用第二个for循环的元素,它应该有元素{1,2,3,4,5,6},但是当我使用 for (int i=array.Length-1;i>array.Length/2;i--) { array[i] = arr[array.Length - 1 - i]; } 在这种情况下,我有6个元素,所以array.Length是6,因为我从array.L

我正在尝试一种方法来反转数组,我不知道为什么它不起作用

当我说
int[]arr=array
时,我想这样做,这样它就不会受到影响,所以我可以使用第二个
for
循环的元素,它应该有元素
{1,2,3,4,5,6}
,但是当我使用

for (int i=array.Length-1;i>array.Length/2;i--)
{
    array[i] = arr[array.Length - 1 - i];
}
在这种情况下,我有6个元素,所以
array.Length
是6,因为我从
array.Length-1
开始,它必须从最后一个元素开始,它必须是
array[5]=arr[6-1-5]
,必须是
arr[0]
arr[0]
是1,但我认为它是6,为什么

以下是完整的代码:

// ReverseArray method
static int [] ReverseArray(int [] array)
{
    int[] arr = array;
    for (int i=0; i<array.Length/2;i++)
    {
        array[i] = array[array.Length-1  - i];
    }
    for (int i=array.Length-1;i>array.Length/2;i--)
    {
        array[i] = arr[array.Length - 1 - i];
    }
    return array;
}

// Method for displaying elements of Array
static void DisplayArray(int [] array)
{
    int i;
    Console.Write("{");
    for (i = 0; i < array.Length-1; i++)
    {
        Console.Write(array[i] + ",");
    }
    Console.WriteLine(array[i] + "}");
}

static void Main(string[] args)
{
    int[] array = { 1, 2, 3, 4, 5 ,6};
    ReverseArray(array);
    DisplayArray(array);
    Console.ReadKey();
}
//reversearlay方法
静态int[]反向数组(int[]数组)
{
int[]arr=数组;
对于(int i=0;iarray.Length/2;i--)
{
array[i]=arr[array.Length-1-i];
}
返回数组;
}
//显示数组元素的方法
静态void DisplayArray(int[]数组)
{
int i;
控制台。写(“{”);
对于(i=0;i
您的反转方法无效:您的代码不是在索引
i
array.Length-1-i
处交换元素,而是将数组的尾部复制到初始部分,有效地将数组“折叠”到自身上


您需要删除第二个循环,并用交换替换赋值:创建一个临时变量,存储
array[i]
,复制
array[array.Length-1-i]
,然后将临时变量写在它的位置。

我忍不住开始编写一段代码试图解决它

    int[] arr = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
    arr = Reverse(arr).ToArray();
以下是实现这一目标的较短方法

    public IEnumerable<int> Reverse(int[] arr)
    {
        for (int i = arr.Length-1; i >= 0; i--)
        {
            yield return arr[i];
        }
    }
public IEnumerable Reverse(int[]arr)
{
对于(int i=arr.Length-1;i>=0;i--)
{
收益率收益率arr[i];
}
}

是否可以为该语言添加标签?在我看来像C#,但我不会把我的工作押在它上面。试着在调试器中运行代码,看看每行上都发生了什么。提示:当你将数组的前半部分按相反的顺序设置为后半部分时,你希望如何获得前半部分的数据?我不得不问,你知道有BCL函数吗?@NightOwl888啊,我知道它存在,但我只是想做我自己的