Wie übergebe ich in der Programmiersprache C # eine Zeile eines mehrdimensionalen Arrays? Angenommen, ich habe Folgendes:
%Vor%Könnte mir jemand den Nutzen von rechteckigen und gezackten Arrays in C # erklären? Tritt dies in anderen gängigen Programmiersprachen auf? (Java?) Danke für die Hilfe!
Sie können keine Reihe eines rechteckigen Arrays übergeben, Sie müssen ein gezacktes Array (ein Array von Arrays) verwenden:
%Vor% BEARBEITEN
Wenn Sie es so nervig finden, ein gezacktes Array zu verwenden und dringend ein rechteckiges Array benötigen, werden Sie mit einem einfachen Trick gerettet:
Sie tun dies nicht mit einem rechteckigen Array Das. Es ist ein einzelnes Objekt.
Stattdessen müssen Sie ein gezacktes Array , so:
%Vor%Dann können Sie jedes "sub" -Array übergeben:
%Vor% Beachten Sie, dass foo[i]
nicht durch den Verweis 1 übergeben werden muss. Außerdem sollten Sie lokale Variablenwerte zum Zeitpunkt der Deklaration zuweisen, sofern möglich. (Es macht Ihren Code kompakter und einfacher zu verstehen.)
1 Wenn Sie sich nicht sicher sind, können Sie meinen Artikel auf Parameter übergeben in C # .
Aktualisieren : Wie Jon Skeet zu Recht darauf hinweist, stellt dies keine Referenz für die Zeile dar, sondern erstellt stattdessen eine neue Kopie. Wenn Ihr Code eine Zeile ändern ändern muss, funktioniert diese Methode nicht. Ich habe die Methode umbenannt, um dies zu verdeutlichen.
Update 2 : Wenn Sie die Felder bearbeiten und Änderungen auch am übergeordneten Array vornehmen möchten, können Sie den von mir bereitgestellten Wrapper in diese Bibliothek habe ich erstellt . Die resultierende Zeile foo.Row(i)
ist kein Array, sondern implementiert IList
. Wenn Sie also ein Array übergeben müssen, ist dies auch keine Lösung.
Mit dieser Erweiterungsmethode können Sie ein mehrdimensionales Array nach Zeilen abfragen. Es sollte beachtet werden, dass dies rechenintensiv ist ( nicht effizient) und wenn es möglich ist , sollten Sie für diese Situationen ein gezacktes Array verwenden. Wenn Sie sich jedoch in einer Situation befinden, in der Sie kein gezacktes Array verwenden können, ist dies möglicherweise nützlich.
%Vor%Ihr Code kann jetzt neu geschrieben werden:
%Vor%Tags und Links arrays c# multidimensional-array row indices