如何在不使用Reverse()方法的情况下使用foreach反转数组

时间:2013-04-04 04:00:40

标签: c# arrays foreach reverse

这是我的C#课程的额外学分。它很容易使用这种方法来反转阵列,但是在不使用它的情况下如何做到这一点非常困惑。任何提示或帮助将不胜感激。

namespace Reverse4Loop 
{
    class Program
    {
        static void Main()
        {
        int[] array = { 1, 2, 3, 4 };
        foreach (int value in array)
        {
            Console.WriteLine(value);
        }
        Console.WriteLine();


        Array.Reverse(array);
        foreach (int value in array)
        {
            Console.WriteLine(value);
        }
        Console.WriteLine();
    }
}

}

4 个答案:

答案 0 :(得分:0)

这是使用foreach和时间List<int>的解决方案:

int[] array = { 1, 2, 3, 4 };
List<int> aux = new List<int>();
foreach (int i in array)
    aux.Insert(0, i);
int[] reversed = aux.ToArray();

答案 1 :(得分:0)

提供额外的学分以帮助激励您学习。请尝试从这个答案中学习,不要只是复制/粘贴它。

LINQ的一个强大功能是它的排序能力:升序和降序。如果上升意味着向上(即向前),那么下降可以说是相反的。

使用LINQ,这是按升序写出数组的方法:

foreach (var value in array.OrderBy(a => a))
    Console.WriteLine(value);

现在,在您将鼠标悬停在下面的答案上以了解如何反向操作之前,请在Visual Studio中使用intellisense,或者使用google LINQ降序并确定要替换的方法{{1 with,以降序写出数组:

<强>答案

  

foreach(array.OrderByDescending中的var值(a =&gt; a))
 Console.WriteLine(值);

将鼠标悬停在上面的框中以显示解决方案

答案 2 :(得分:-1)

检查这是否适合你:)这是典型的方法。但是,在提供额外积分时还期待别的什么吗?

static void Main(string[] args)
{
    int[] array = { 1, 2, 3, 4 };
    int length = array.Count();
    for (int i = 0; i < length / 2; i++)
    {
        int temp = array[i];
        array[i] = array[length - 1 - i];
        array[length - 1 - i] = temp;
    }
    foreach (int value in array)
    {
        Console.WriteLine(value);
    }
}

答案 3 :(得分:-1)

namespace Reverse4Loop 
{
    class Program
    {
        static void Main()
        {
        int[] array = { 1, 2, 3, 4 };
        foreach (int value in array)
        {
            Console.WriteLine(value);
        }
        Console.WriteLine();

        int arrayLength = array.Length;

        int[] array2 = new int[arrayLength];

        for(int i = 0; i < array.Length; i++)
        {
            array2[arrayLength - (i + 1)] = array[i];
        }

        Array.Copy(array2, array, arrayLength);

    }
}

希望这会对你有所帮助