Вот функция, которая дает необходимый результат, но странным образом изменяет оригинал;
Я понимаю, что это только странно для меня, потому что я не понимаю, почему это происходит; Я читаю функции документации. Я ожидал изменения оригинального массива, но не в том же способе. < /P>
Оригинальная матрица до < /p>
[0] < /th>
< /br />
< /br />
/>[2]
1
2
3
4
5
6
7
8
9
Оригинальная матрица после < /p>
[0] < /th>
[1] < /th>
[2] < /th>
[1] < /th>
[2] < /br /> />
9 < /td>
8 < /td>
7 < /td>
< /tr>
6 < /td>
5
6 < /td>
5
6 < /td>
5
/> < /tr>
1 < /td>
2 < /td>
3 < /td>
< /tr>
< /tbody>
< /table> < /div>
return < /p>
< /div>
< /p>
< /div>
< /p>
class = "s-table">
[0] < /th>
[1] < /th>
< /tr>
< /theade>
5 < /td>
/> < /tr>
8 < /td>
9 < /td>
< /tr>
< /tbody>
< /table> < /div>
< /tbody>
< /table> < /div>
Код: Выделить всё
public static double[][] magicReference(double[][] A)
{
Array.Reverse(A);
Array.Resize(ref A, A.Length - 1);
Array.Reverse(A);
for (int i = 0; i < A.Length; i++)
{
Array.Reverse(A[i]);
Array.Resize(ref A[i], A[i].Length - 1);
Array.Reverse(A[i]);
}
return A;
}
< /code>
Смешное дополнение: это переворачивает исходную матрицу равное количество раз, поэтому он не изменяется, однако он также возвращает различный сегмент матрицы < /p>
public static double[][] magicReference(double[][] A)
{
Array.Reverse(A)
Array.Reverse(A);
Array.Resize(ref A, A.Length - 1);
Array.Reverse(A);
for (int i = 0; i < A.Length; i++)
{
Array.Reverse(A[i]);
Array.Reverse(A[i]);
Array.Resize(ref A[i], A[i].Length - 1);
Array.Reverse(A[i]);
}
return A;
}
Подробнее здесь: https://stackoverflow.com/questions/795 ... s-does-not