Nachdem wir im letzten Beitrag bereits die eindimensionalen Arrays kennengelernt und mit diesen gearbeitet haben, sehen wir uns heute die C# 2D Arrays genauer an. Da man diese auch häufig in der Praxis benötigt, stellen auch sie eine unentbehrliche Grundlage beim Programmieren in C# dar.
Inhaltsverzeichnis
1. Was sind C# 2D Arrays?
Während 1D Arrays wie eine Liste von Werten strukturiert sind, kann man sich in C# 2D Arrays wie eine Tabelle oder wie ein Raster aus Werten vorstellen. Mit zwei Dimensionen, also mit Zeilen und Spalten.
Ein 2D-Array sieht in C#-Code folgendermaßen aus:
Das hier ist ein einfaches String-Array mit zwei Dimensionen. Genannt habe ich dieses einfach mal „products“. Du siehst, man erstellt das Ganze auf einem sehr ähnlichen Weg wie ein 1D-Array, nur dass man beim Erstellen eines C# 2D Arrays in das eckige Klammerpaar noch ein Komma setzt.
Bei der Erstellung muss man nämlich Größen für zwei verschiedene Dimensionen angeben. Einmal geben wir die Anzahl der Spalten pro Zeile an, das ist die x-Achse. Dann geben wir noch die Anzahl der Zeilen an, also die Anzahl an Werten auf der y-Achse:
Auf diese Weise kann man sich das Ganze wie eine Tabelle vorstellen.
Wir haben hier nun also ein 2D-Array mit dem Namen „products“ erstellt, welches zwei Spalten und drei Zeilen besitzt. Also drei Zeilen mit jeweils zwei Spalten. In jeder Zeile befindet sich in der ersten Spalte immer der Produktname.
In der Spalte 0 von Zeile 0 haben wir beispielsweise den Namen „Senf“ als Produktnamen geschrieben. In der Spalte 1 von Zeile 0 befindet sich der Produkttyp Lebensmittel:
Wie bei eindimensionalen Arrays siehst du, dass in C# 2D Arrays ebenfalls jeweils immer bei Index 0 beginnen. Der 0te Index ist also immer der erste Index.
Das habe ich in diesem Beispiel mit drei verschiedenen Zeilen umgesetzt. Ich habe also zu diesem products-Array drei Produkte mit jeweils einem Produkttyp hinzugefügt.
In Spalte 0, Zeile 1 sehen wir den Produktnamen „Smartphone“ und in Spalte 1 von Zeile 1 haben wir dessen Produkttyp, nämlich Elektronik:
Zu guter Letzt haben wir noch Spalte 0 von Zeile 2 mit dem Produktnamen „Schokolade“ und in Spalte 1 von Zeile 2 den Produkttyp Lebensmittel:
Weil das Ganze so nun etwas verwirrend aussieht, habe ich es noch einmal auf eine andere Art visualisiert:
Man kann sich in C# 2D Arrays im Grunde wie eine Tabelle vorstellen, die zwei Dimensionen besitzt. Diese enthält verschiedene Zellen, also Spalten, in die man Werte eintragen kann.
1.1. Genauere Erläuterung der Tabelle
Spalte 0 von Zeile 0 ist der Produktname „Senf“.
Spalte 1 von Zeile 0 ist der Produkttyp Lebensmittel.
Spalte 0 von Zeile 1 ist der Produktname „Smartphone“.
Spalte 1 von Zeile 1 ist der Produkttyp Elektronik.
Spalte 0 von Zeile 2 ist der Produktname „Schokolade“.
Und zuletzt befindet sich in Spalte 1 von Zeile 2 der Produkttyp Lebensmittel.
Damit das Thema noch verständlicher erscheint, sehen wir uns die 2D Arrays nun einmal in der Praxis in Visual Studio an.
2. C# 2D Arrays in der Praxis
Wie erstellt man ein zweidimensionales Array? Man erzeugt C# 2D Arrays im Grunde genau wie 1D Arrays, allerdings setzt man zusätzlich ein Komma zwischen das eckige Klammerpaar.
2.1. 2D Arrays erzeugen
Wenn wir jetzt also beispielsweise ein 2D-Array aus Strings erstellen möchten, dann schreiben wir einfach den Datentyp String, das eckige Klammerpaar und ein Komma zwischen die Klammern. Damit legen wir fest, dass es sich nicht um ein 1D-Array, sondern um ein 2D-Array handelt:
Man kann in C# 2D Arrays natürlich auch von verschiedenen Datentypen erstellen. Das heißt, es sind nicht nur Strings möglich, sondern auch Integer, Decimals, Booleans und jeder beliebige selbsterstellte Datentyp auch, den man in Form einer Klasse definiert hat.
Jetzt muss man diesem Array natürlich noch einen Namen geben. Ich nenne es wieder „products“, wie bereits im vorherigen Beispiel:
Dann erstellen wir das Arrayobjekt. Wie machen wir das? Wie bei 1D-Arrays auch: Wir schreiben erst mal das Schlüsselwort new und anschließend wieder das Wort „string“, dann setzen wir ein eckiges Klammerpaar:
Die Größen der Dimensionen müssen wir an dieser Stelle noch innerhalb des Klammerpaars vor und nach dem Komma angeben.
Zuerst müssen wir angeben, wie viele Werte es auf der x-Achse jeweils gibt. Also wie viele Spalten dieses Array pro Zeile besitzt.
Für unser Praxisbeispiel legen wir jetzt zwei Spalten pro Zeile fest. Dann folgt das Komma und anschließend geben wir die Größe der y-Achse an. Das heißt, wie viele Werte wir auf der y-Achse haben, also über wie viele Zeilen diese Tabelle verfügt.
Hierfür legen wir einmal drei Zeilen fest. Dann schließen wir die Zeile mit einem Semikolon ab:
Und damit haben wir jetzt ein String Array namens products erstellt, welches zwei Dimensionen hat! Und zwar zwei Spalten jeweils auf drei Zeilen.
2.2. Werte an 2D Arrays zuweisen
Ab diesem Punkt ist der Umgang mit 2D-Arrays eigentlich exakt derselbe wie der mit 1D-Arrays. Nur dass wir beim Adressieren eines Wertes nicht nur einen Index angeben müssen, also eine Zahl für den Index, sondern die Koordinaten des Wertes in diesem 2D-Array.
Wir müssen also angeben, in welcher Spalte von welcher Zeile sich ein Wert befindet.
Den Wert von products Spalte 0 von Zeile 0 setzen wir beispielsweise einmal auf „Apfel“.
Wir geben also erst die Koordinate auf der x-Achse an und anschließend die Koordinate auf der y-Achse.
In Spalte 0 von Zeile 0 haben wir also den Wert Apfel geschrieben. Welcher Produkttyp ist ein Apfel? Es ist ein Lebensmittel, das heißt, wir schreiben in Zeile 0 von Spalte 1 den Produkttyp „Lebensmittel“:
Nun haben wir in Spalte 0 von Zeile 0 den Namen Apfel und in Spalte 1 von Zeile 0 den Produkttyp Lebensmittel.
Genauso können wir das nun auch bei anderen Produkten umsetzen. In Zeile 1 von Spalte 0 schreiben wir zum Beispiel „Computer“. Den Produkttyp „Elektronik“ legen wir für Spalte 1 von Zeile 1 fest:
Zu guter Letzt schreiben wir in Spalte 0 von Zeile 2 „Brot“ als weiteres Lebensmittel und den Produkttyp „Lebensmittel“ in Spalte 1 von Zeile 2:
Wie du gesehen hast, funktioniert bei den 2D-Arrays das Zuweisen der Werte genau wie bei den eindimensionalen Arrays. Der Unterschied besteht darin, bei den zweidimensionalen Arrays zwei Werte für die Koordinaten angeben zu müssen.
2.3. Werte von 2D Arrays lesen
Das Lesen der Werte funktioniert im Grunde genauso.
Dafür setzen wir unter den Code ein Console.WriteLine und lassen uns die erste Produktzeile einmal ausgeben. Zuerst lassen wir den Produktnamen „Apfel“ ausgeben. Dafür schreiben wir die folgende Zeile:
Bei der Ausgabe sehen wir nun den Namen Apfel:
An dieser Stelle können wir noch einen Trennstrich hinzufügen sowie die Koordinaten für Spalte 1 von Zeile 0, damit uns das Programm auch den Produkttyp in der Konsole ausgibt:
Und das können wir jetzt natürlich mit den anderen Zeilen auch machen. Lassen wir also beispielsweise einmal Spalte 0 von Zeile 1 und Spalte 1 von Zeile 1 ausgeben, dann sehen wir Computer | Elektronik in der Konsole:
Wenn wir Spalte 0 von Zeile 2 und Spalte 1 von Zeile 2 ausgeben lassen, dann haben wir Brot und Lebensmittel in der Konsole stehen:
Gar nicht mal so schwierig! Du hast nun also gelernt, wie man mit zweidimensionalen Arrays arbeitet und wie diese aufgebaut sind. Da man die C# 2D Arrays in der Praxis häufig benötigt, empfehle ich dir, noch etwas damit herumzuexperimentieren. So kannst du das Thema verinnerlichen.
Im Grunde haben wir es dabei mit keinem sehr schwierigen Thema zu tun, da es sich um eine Tabelle aus Werten handelt. Auf die Spalten der Zeilen kann man zugreifen, indem man im eckigen Klammerpaar die Koordinaten dafür angibt.