2D阵列不会转发c#

sma*_*l-j 6 c# arrays

我有一个简单的任务来转发方形2D数组:(我需要以非常简单的方式进行,没有容器等)

static void Main(string[] args)
    {


        double[,] a = new double[5, 5];
        Random random = new Random();

        for(int i = 0; i < 5; i++)
        {
            for(int j = 0; j < 5; j++)
            {
                a[i, j] = random.NextDouble();
            }
        }

        for (int i = 0; i < 5; i++)
        {
            for (int j = 0; j < 5; j++)
            {
                Console.Write(a[i, j] + " ");

            }
            Console.WriteLine();
        }


        for (int i = 0; i < 5; i++)
        {
            for (int j = 0; j < 5; j++)
            {
                double temp = a[i, j];
                a[i, j] = a[j, i];
                a[j, i] = temp;
            }
        }

        Console.WriteLine("\n\n\n");
        for (int i = 0; i < 5; i++)
        {
            for (int j = 0; j < 5; j++)
            {
                Console.Write(a[i, j] + " ");

            }
            Console.WriteLine();
        }

        Console.ReadKey();


    }
}
Run Code Online (Sandbox Code Playgroud)

我期待一个反向数组作为输出.但是,我在这里得到了相同的数组.请帮我看看我做错了什么? 控制台输出. 双数组不会转换

Art*_*aca 6

这是因为你既执行for从环路05.所以你要做两次转置.

例如,对于i=0j=1你转置a[0,1]with a[1,0]和when i=1以及j=0a[1,0]a[0,1]返回其原始位置.

你可以让内部for0i,这样的位置被交换只是一个时间.

for (int i = 0; i < 5; i++)
{
    for (int j = 0; j < i; j++)
    {
        double temp = a[i, j];
        a[i, j] = a[j, i];
        a[j, i] = temp;
    }
}
Run Code Online (Sandbox Code Playgroud)