Почему Array.Reverse (а) Иногда меняет оригинальный массив, но иногда нет?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Почему Array.Reverse (а) Иногда меняет оригинальный массив, но иногда нет?

Сообщение Anonymous »

Я искал аналогичный вопрос и не нашел ответа.
Вот функция, которая дает необходимый результат, но странным образом изменяет оригинал;
Я понимаю, что это только странно для меня, потому что я не понимаю, почему это происходит; Я читаю функции документации. Я ожидал изменения оригинального массива, но не в том же способе. < /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;
}
Ну, я прочитал документацию по рефере, и публичная статическая двойная [] [] MagicReference (ref double [] [] a) делает оригинал тем же, что и результат, однако я не ожидал, что только половина Array.Reverse будет работать, а Array.Resize (ссылка A, A.Length - 1); Также размещение array.resize (ref a, a.length); в любой момент ничего не меняет.

Подробнее здесь: https://stackoverflow.com/questions/795 ... s-does-not
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»