Как можно изменить двумерный массив методом с this?

Как можно повернуть эту матрицу не изменяя строку mat.Rotate90DegreesClockwise(); и не добавляя других строк в Main? Метод для поворота матрицы рабочий, но не знаю как вернуть ответ. Матрица не поворачивается за пределами метода Rotate90DegreesClockwise. Прохожу курс по шарпу, и пока не пойму, это юниттест ломаный или я чего-то не понимаю...

        static void Main(string[] args)
        {
            int[,] mat = new int[,] {
            {1,2,3},
            {4,5,6},
            {7,8,9}
            };
            mat.Rotate90DegreesClockwise();
            Console.WriteLine(mat[0,0]);
        }
        public static void Rotate90DegreesClockwise(this int[,] matrix)
        {
            if (matrix is null)
            {
                throw new ArgumentNullException(nameof(matrix));
            }

            matrix = Rotate(matrix);
            Console.WriteLine(matrix[0, 0]);
        }

        public static int[,] Rotate(int[,] m)
        {
            int[,] result = new int[m.GetLength(1), m.GetLength(0)];

            for (int i = 0; i < m.GetLength(1); i++)
            {
                for (int j = 0; j < m.GetLength(0); j++)
                {
                    result[i, j] = m[m.GetLength(0) - j - 1, i];
                }
            }

            return result;
        }

Ответы (1 шт):

Автор решения: aepot

Например так, скопировать значения обратно в исходную матрицу

public static void Rotate90DegreesClockwise(this int[,] matrix)
{
    if (matrix is null)
        throw new ArgumentNullException(nameof(matrix));

    if (matrix.GetLength(0) != matrix.GetLength(1))
        throw new ArgumentException("Получена не квадратная матрица", nameof(matrix));

    int size = matrix.GetLength(0);
    int[,] buffer = new int[size, size];

    for (int row = 0; row < size; row++)
    {
        for (int col = 0; col < size; col++)
        {
            buffer[row, col] = matrix[size - col - 1, row];
        }
    }

    for (int row = 0; row < size; row++)
    {
        for (int col = 0; col < size; col++)
        {
            matrix[row, col] = buffer[row, col];
        }
    }
}
→ Ссылка