1. Einführung
Stell dir ein gewöhnliches Array wie eine lange Pizzaschachtel vor, in der alle Stücke in einer Reihe liegen – lecker, aber eintönig.
Und jetzt stell dir einen Arbeitsplan oder ein Schachbrett vor. Da ist schon alles in Zeilen und Spalten organisiert – also in einer Tabelle. Genau das ist der klassische Anwendungsfall für ein zweidimensionales Array.
Im echten Leben begegnen dir zweidimensionale Arrays überall:
- Tabellen mit Gehältern von Mitarbeitern (Zeilen – Mitarbeiter, Spalten – Monate).
- Ein Bild auf dem Bildschirm (jede "Zelle" – die Farbe eines Pixels, mit zwei Koordinaten: X und Y).
- Matrizenberechnungen und Datenverarbeitung.
- Schachbrett oder Spielfeld für Tic-Tac-Toe.
Manchmal nennt man ein zweidimensionales Array auch Matrix (dieser Begriff kommt aus der Mathematik).
Es gibt echt viele Situationen, in denen du als Programmierer ein zweidimensionales Array brauchst. Die Umsetzung fast jedes Brettspiels ist ein fertiges zweidimensionales Array: „Schach“, „Dame“, „Tic-Tac-Toe“, „Schiffe versenken“:
Das Spielfeld von „Schach“ oder „Schiffe versenken“ passt einfach perfekt auf zweidimensionale Arrays, wo du als Koordinaten der Felder einfach Zahlen verwendest. Nicht „Bauer e2 → e4“, sondern „Bauer (4,1) → (4,3)“. Für dich als Programmierer ist das sogar einfacher.
2. Syntax zur Deklaration von zweidimensionalen Arrays
Angst hat man nur vor der ersten Deklaration! Lass uns Schritt für Schritt durchgehen.
Allgemeine Regel
Typ[,] arrayName;
Das Komma , in den Klammern ist kein Kompilierfehler nach einer langen Nacht mit Kaffee, sondern zeigt an: Das Array ist zweidimensional.
Beispiele
int[,] matrix;
double[,] gradesTable;
string[,] chessBoard;
Array erstellen
Wir geben die Größe an: Anzahl der Zeilen und Spalten.
matrix = new int[3, 4]; // 3 Zeilen, 4 Spalten
Das ist eine 3x4-Tabelle: Stell dir eine Excel-Tabelle mit 3 Zeilen und 4 Spalten vor.
Du kannst die Variable auch gleich deklarieren und das zweidimensionale Array erstellen:
int[,] matrix = new int[3, 4];
Du kannst es auch direkt mit Werten initialisieren (ähnlich wie bei eindimensionalen Arrays):
int[,] beispiel = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
// Tabelle mit 3 Zeilen, 3 Spalten
Wichtig: ALLE Zeilen müssen bei dieser Initialisierung gleich lang sein. Du kannst nicht die erste Zeile mit 3 Elementen und die zweite mit 2 machen.
Visuelles Schema
┌─────┬─────┬─────┬─────┐
│ 0 │ 1 │ 2 │ 3 │ ← Spalten (Columns)
├─────┼─────┼─────┼─────┤
│ 0,0 │0,1 │0,2 │0,3 │ ← Zeile 0 (Row 0)
├─────┼─────┼─────┼─────┤
│ 1,0 │1,1 │1,2 │1,3 │ ← Zeile 1 (Row 1)
├─────┼─────┼─────┼─────┤
│ 2,0 │2,1 │2,2 │2,3 │ ← Zeile 2 (Row 2)
└─────┴─────┴─────┴─────┘
Jedes Element wird durch ein Paar von Indizes [Zeile, Spalte] angesprochen.
3. Indizierung und Zugriff auf Elemente
In einem zweidimensionalen Array gibst du für den Zugriff auf ein Element zwei Indizes an:
- Der erste – die Zeilennummer
- Der zweite – die Spaltennummer
matrix[1, 2] = 99; // In der zweiten Zeile (Index 1), dritte Spalte (Index 2)
Falls du Schach gewohnt bist: Die Indizierung beginnt bei null. Das heißt, das erste Element ist [0, 0].
Schreiben und Lesen
int[,] daten = new int[5, 2];
daten[1, 1] = 5; // schreiben
int wert = daten[1, 1]; // lesen
So sieht das im Speicher aus:
4. Befüllen eines zweidimensionalen Arrays
Lass uns Code schreiben, der die Matrix mit fortlaufenden Zahlen von 1 bis 12 füllt, damit du siehst, wie das funktioniert.
int[,] matrix = new int[3, 4];
int wert = 1;
for (int zeile = 0; zeile < 3; zeile++)
{
for (int spalte = 0; spalte < 4; spalte++)
{
matrix[zeile, spalte] = wert;
wert++;
}
}
Hier läuft die äußere Schleife über die Zeilen, die innere über die Spalten.
Illustration:
Nach der Ausführung:
┌────┬────┬────┬────┐
│ 1 │ 2 │ 3 │ 4 │
├────┼────┼────┼────┤
│ 5 │ 6 │ 7 │ 8 │
├────┼────┼────┼────┤
│ 9 │10 │11 │12 │
└────┴────┴────┴────┘
5. Dimensionen: Anzahl der Zeilen und Spalten herausfinden
Oft musst du die Größe des Arrays "on the fly" herausfinden. In C# gibt es dafür die praktische Methode GetLength().
int[,] matrix = new int[3, 4];
int zeilen = matrix.GetLength(0); // Anzahl der Zeilen (erste Dimension) - 3
int spalten = matrix.GetLength(1); // Anzahl der Spalten (zweite Dimension) - 4
Console.WriteLine($"Zeilen: {zeilen}, Spalten: {spalten}");
Verwechsele das nicht mit Length – bei einem zweidimensionalen Array ist das die Gesamtanzahl aller Elemente (Zeilen × Spalten).
6. Ausgabe eines zweidimensionalen Arrays auf dem Bildschirm
Für die Ausgabe einer zweidimensionalen Tabelle benutzt man meistens zwei Schleifen – das ist wie ein Labyrinth in der Konsole zu zeichnen. Beispiel:
for (int zeile = 0; zeile < matrix.GetLength(0); zeile++)
{
for (int spalte = 0; spalte < matrix.GetLength(1); spalte++)
{
Console.Write(matrix[zeile, spalte] + "\t"); // "\t" – Tabulator für die Optik
}
Console.WriteLine(); // Zeilenumbruch
}
Beispielausgabe:
1 2 3 4
5 6 7 8
9 10 11 12
Übrigens, hier hast du gelernt, wie man mit ein paar Zeilen Code hübsche Tabellen "zeichnet"!
7. Mehrdimensionale Arrays
Und noch ein interessanter Fakt über Arrays, den du dir vielleicht schon gedacht hast. Wenn man ein zweidimensionales Array machen kann, geht dann auch ein dreidimensionales?
Ja, du kannst ein Array mit beliebig vielen Dimensionen erstellen. Solche Arrays nennt man mehrdimensionale Arrays.
Wie man mehrdimensionale Arrays deklariert
Du musst einfach die gewünschte Anzahl an Dimensionen durch Kommas angeben:
int[,,,] matrix = new int[2, 3, 4, 5];
Hier haben wir ein vierdimensionales Array:
- 2 Elemente in der ersten Dimension,
- 3 – in der zweiten,
- 4 – in der dritten,
- 5 – in der vierten.
Im Speicher ist so ein Array ein großer „Datenwürfel“, der hintereinander abgelegt ist.
Wie man auf Elemente zugreift
Der Zugriff erfolgt über alle Indizes gleichzeitig:
matrix[0, 1, 2, 3] = 42;
int wert = matrix[1, 2, 0, 4];
- Die Indizes beginnen wie immer in C# bei null.
- In so einem Array gibt es insgesamt 2 × 3 × 4 × 5 = 120 Elemente.
Praktische Beispiele für mehrdimensionale Arrays
- 2D – Tabellen, Schachbretter, Bilder.
- 3D – „Würfel“ in der Computergrafik, Daten für wissenschaftliche Berechnungen (z.B. Temperatur an verschiedenen Punkten im Raum und in der Zeit).
- 4D und mehr – werden selten verwendet, kommen aber in fortgeschrittener Mathematik, Simulationen, Machine Learning usw. vor.
GO TO FULL VERSION