Mögliche Duplizieren:
What is differences between Multidimensional array and Array of Arrays in C#?C# Arrays - string [] [] vs. string [,]
Kann mir jemand erklären den Unterschied zwischen string[][]
und string[,]
?
Mögliche Duplizieren:
What is differences between Multidimensional array and Array of Arrays in C#?C# Arrays - string [] [] vs. string [,]
Kann mir jemand erklären den Unterschied zwischen string[][]
und string[,]
?
string[,]
ist ein multidimensional array.
string[][]
ist ein Jagged array:
A gezackten Array ist ein Array, dessen Elemente-Arrays. Die Elemente von einer gezackten Anordnung können unterschiedliche Abmessungen und Größen haben. Ein gezacktes Array wird manchmal als "Array von Arrays" bezeichnet."
string[,]
-Multidimensional Arrary (Rectangular array)
Multidimensional kann mehr als eine Dimension haben. Das folgende Beispiel zeigt, wie Sie ein zweidimensionales Array aus zwei Zeilen und zwei Spalten erstellen.
Erklärung:
string[,] contacts;
Instanziierung:
string[,] contacts = new string[2,2];
Initialisierung:
string[,] contacts = new string[2, 2] { {"John Doe","[email protected]"}, {"Jane Doe","[email protected]"} };
string[ ][ ]
- Jagged Array (Array-of-arrays)
Ein gezacktes Array ist ein Array, dessen Elemente Arrays sind. Die Elemente eines gezackten Arrays können verschiedene Dimensionen und Größen haben. Ein gezacktes Array wird manchmal als "array-of-arrays" bezeichnet.
Ein gezacktes Array kann effizient viele Zeilen unterschiedlicher Länge speichern. Jede Art von Daten, Referenz oder Wert kann verwendet werden. Das Indizieren von gezackten Arrays ist schnell. Die Zuordnung ist etwas langsam.
Jagged-Arrays sind schneller als mehrdimensionale Arrays
Deklaration:
string[][] contacts;
Instanziierung:
string[][] contacts = new string[2][];
for (int i = 0; i < contacts.Length; i++)
{
contacts[i] = new string[3];
}
Initialisierung:
string[][] contacts = new string[2][] { new string[] {"[email protected]","[email protected]"}, new string[] {"[email protected]","[email protected]","[email protected]"} };
string[][]
als jagged array
A gezackten Array ist ein Array, dessen Elemente-Arrays. Die Elemente eines gezackten Array unterschiedlicher Abmessungen und Größen sein kann. Ein gezackten Array wird manchmal ein "Array-of-Arrays."
während string[,]
ist eingenanntwelche
Arrays können
string[][]
(Jagged Arrays) sind Array von Array mehr als eine Dimension haben, mit festen Anzahl von Zeilen und variabler Länge der Spalten während string[,]
(Rectangular Arrays) ist eine Matrix mit einer festen Anzahl von Zeilen und Spalten. Es gibt eine gute Diskussion over there
Zwei Aspekte des Unterschiedes wichtig sind:
Speicher-weise:
[n, m] - Gespeichert als eine lange Reihe von Gedächtnis, als wäre es [ n * m] [n] [m] - Gespeichert als einfaches Array der Größe n, wobei jedes Element ein Zeiger auf ein Array der Größe m ist.
Zugang weise:
[n, m] - Zelle Für den Zugriff auf i, j, was wirklich passiert ist, dass es den Zeiger des [n * m] Array und gleicht sie durch n * Breite nimmt + m und greift dann auf den Wert zu. [n] [m] - Um auf Zelle i, j zuzugreifen, greifen Sie einfach auf den Sub-Array-Zeiger mit dem Index n (Offset # 1) zu und greifen dann auf das Sub-Array mit dem Index m (Offset # 1) zu.
[] [] Ist in beiden Aspekten besser. Effizienter im Zugriff und flexibler im Speicher. Sie können auch nur einmal auf eine einzelne Zeile zugreifen und sie noch effizienter verarbeiten, da Sie für jede Zelle in dieser Zeile keinen vollständigen mehrdimensionalen Zugriff ausführen.
Es gibt jedoch einen Vorteil von [,]: Sie wissen immer, dass die Breite der Matrix fest ist. Mit [] [] kann jedes Unterfeld unterschiedliche Längen haben und sogar null sein. Dies kann als ein Vorteil angesehen werden, obwohl das Gegenteil manchmal auch nützlich sein kann.
Sehen Sie, wie ich Ihre Antwort bearbeitet habe, und Sie lernen, wie Sie Links einfügen ... – aleroot