CodeGym /Kurse /C# SELF /Zweidimensionale Arrays

Zweidimensionale Arrays

C# SELF
Level 7, Lektion 4
Verfügbar

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“:

Zweidimensionale Arrays 2

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;
Deklaration eines zweidimensionalen Arrays

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
Initialisierung eines zweidimensionalen Arrays mit Werten

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)
Zuweisung eines Wertes zu einem Element eines zweidimensionalen Arrays

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:

Zweidimensionale Arrays

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++;
    }
}
Befüllen eines zweidimensionalen Arrays mit fortlaufenden Zahlen

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}");
Achtung:

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];
Deklaration eines vierdimensionalen Arrays

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.
2
Aufgabe
C# SELF, Level 7, Lektion 4
Gesperrt
Initialisierung eines zweidimensionalen Arrays und Ausgabe seiner Elemente
Initialisierung eines zweidimensionalen Arrays und Ausgabe seiner Elemente
2
Aufgabe
C# SELF, Level 7, Lektion 4
Gesperrt
Berechnung der Summen der Zeilenelemente in einem zweidimensionalen Array
Berechnung der Summen der Zeilenelemente in einem zweidimensionalen Array
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION