Warum Array.Reverse (a) manchmal das ursprüngliche Array verändern, aber manchmal nicht? [geschlossen]
Posted: 12 Apr 2025, 18:35
Ich habe eine ähnliche Frage gesucht und keine Antwort gefunden. Ich lese Funktionen Dokumentation. Ich habe die Änderung des ursprünglichen Arrays erwartet, aber nicht in einer solchen Weise. />[2]
1
2
3
4
5 < /td>
6 < /td>
< /tr>
7 < /td>
8 < /td>
< /tb /table>
< /tb /> < /tbody />Original matrix after
[0]
[1]
[2]
9
8
7
6
5
4
1
2
3
Return
[0]
[1]
5
6
< /tr>
8 < /td>
9 < /td>
< /tr>
< /tbody>
< /table> < /div>
Nun, ich habe Ref -Dokumentation gelesen, und öffentliches statisches Double [] [] MagicReference (Ref Double [] [] A) macht das ursprüngliche Ergebnis wie Ergebnis. Auch Array.Resize einsetzen (Ref A, A.Length) ändert an keinem Zeitpunkt nichts.
1
2
3
4
5 < /td>
6 < /td>
< /tr>
7 < /td>
8 < /td>
< /tb /table>
< /tb /> < /tbody />Original matrix after
[0]
[1]
[2]
9
8
7
6
5
4
1
2
3
Return
[0]
[1]
5
6
< /tr>
8 < /td>
9 < /td>
< /tr>
< /tbody>
< /table> < /div>
Code: Select all
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>
Eine lustige Addition: Dieser Umkehrt die ursprüngliche Matrix. 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;
}