C# 交换数组-C中对角的元素#

C# 交换数组-C中对角的元素#,c#,matrix,diagonal,C#,Matrix,Diagonal,我想知道如何在2D数组中编写一个程序来交换主对角线和次对角线的元素,然后打印结果 像这样 3.27 4.5.3 289 结果显示如下 7.2.3 4.5.3 9.8.2事实上,这不是一个非常具体的问题,但由于我看不出您遇到的问题,我将尝试向您解释一个完整的示例: static int[,] GetDiagonallySwitched(int[,] oldMatrix) { var newMatrix = (int[,])oldMatrix.Clone(); for (var i

我想知道如何在2D数组中编写一个程序来交换主对角线和次对角线的元素,然后打印结果 像这样

3.27
4.5.3
289

结果显示如下

7.2.3
4.5.3

9.8.2

事实上,这不是一个非常具体的问题,但由于我看不出您遇到的问题,我将尝试向您解释一个完整的示例:

static int[,] GetDiagonallySwitched(int[,] oldMatrix)
{
    var newMatrix = (int[,])oldMatrix.Clone();

    for (var i = 0; i < oldMatrix.GetLength(0); i++)
    {
        var invertedI = oldMatrix.GetLength(0) - i - 1;
        newMatrix[i, i] = oldMatrix[i, invertedI];
        newMatrix[i, invertedI] = oldMatrix[i, i];
    }
    return newMatrix;
}

我希望我能帮助你。

请展示你已经尝试了什么,为什么你要用c来标记它?矩阵保证是正方形的吗?@GiladGreen我没有一个清晰的代码,这就是为什么我没有把它错贴为c,是的,我想是正方形@WillemVanonSem你会有什么错误?这很奇怪,因为它对我很管用。我希望你的矩阵是二次的?我在OldMatrix中得到错误。如果我键入任何数字,它将关闭。你到底在做什么?你能提供一个代码示例吗?什么结束了?这完全取决于您如何实施我的解决方案。你对旧矩阵的精确误差是多少?
static void Print(int[,] switched)
{
    for (var y = 0; y < switched.GetLength(0); y++)
    {
        for (var x = 0; x < switched.GetLength(1); x++)
            Console.Write(switched[y, x]);
        Console.WriteLine();
    }
}