基本的c#问题

Cof*_*ode 6 .net c#

为什么元素不会被交换

public static void SwapArray(int[,] arr)
    {
        for (int i = 0; i < arr.GetLength(0); i++)
        {
            for (int j = 0; j < arr.GetLength(0); j++)
            {
                int temp = arr[i, j];
                arr[i, j] = arr[j, i];
                arr[j, i] = temp;
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

即使参数没有ref修饰符,数组也不会改变.引用的副本作为参数传递对吗?

Jen*_*ens 21

您的算法中存在错误.对于每一个i和j,你的循环交换arr[i,j]arr[j,i]的两倍.

例如arr[3,1],arr[1,3]对于i = 3,j = 1 进行一次交换,对于i = 1 进行一次交换,j = 3.结果是原始矩阵.你应该将j-loop更改为

for (int j = 0; j < i; j++) 
Run Code Online (Sandbox Code Playgroud)