In diesem Artikel wirst du die C# foreach Schleife kennenlernen. Dabei handelt es sich um einen Schleifentyp, der sich gerade beim Durchlaufen von Datenstrukturen wie zum Beispiel Arrays, als sehr nützlich erweist.
Inhaltsverzeichnis
1. Was ist eine C# foreach Schleife?
Foreach Schleifen nutzt man in C# zum Durchlaufen von Datenstrukturen, wie etwa Arrays. Wenn wir also beispielsweise ein großes Array erstellt haben, dessen Werte wir alle auf der Konsole ausgeben lassen möchten, bietet sich eine foreach Schleife sehr gut dafür an.
Dabei besitzt sie im Unterschied zur for Schleife keine Zählervariable. Die C# foreach Schleife hat lediglich eine Variable, die auf das aktuell zu durchlaufende Objekt referenziert.
Diesen Unterschied zu verstehen ist sehr wichtig. Bei einer gewöhnlichen for Schleife hat man bekanntermaßen die Zählervariable. Diese beinhaltet immer den Index des Arrays, den wir durchlaufen. Bei der foreach Schleife haben wir diesen Index hingegen nicht. Statt der Zählervariable haben wir lediglich eine einzige Variable, in welcher sich immer das aktuell durchlaufene Objekt befindet.
Das bedeutet: Möchten wir nochmals Zugriff auf das in der Iteration zuvor durchlaufene Objekt, ist das bei einer foreach Schleife nicht möglich. Das werden wir uns aber gleich noch genauer ansehen.
Werfen wir nun mal einen Blick auf das folgende Beispiel:
Im Beispiel habe ich zunächst ein String Array erstellt. Dabei handelt es sich genauer gesagt um ein eindimensionales Array vom Typ String namens „namen“, in welchem sich die vier Namen Claudia, Hans, Aline und Giuseppe befinden.
Darunter habe ich eine foreach Schleife gesetzt, in welcher ich jeden Einzelnen dieser Namen durchlaufe und diese dann jeweils in der Konsole ausgebe. Doch wie funktioniert die foreach Schleife und wie ist sie aufgebaut?
2. Aufbau der C# foreach Schleife
Man beginnt die foreach Schleife mit dem Schlüsselwort foreach. Anschließend folgt ein Klammerpaar. In diesem Klammerpaar deklariert man zunächst eine Variable, die immer das aktuell durchlaufene Objekt beinhalten soll. Wir durchlaufen hierbei jeden einzelnen Namen im Array namen. Und genau das schreiben wir auch so aus. Es folgt also das Schlüsselwort „in“. In welchem Array bzw. welcher Datenstruktur passiert das? In der, die sich in der Variable namen befindet. Das ist schließlich die Variable, die dieses String Array beinhaltet.
Wir weisen hier also das Programm an, jeden String name im Array namen zu durchlaufen. Daraufhin folgt darunter beispielhaft zwischen den geschweiften Klammern Console.WriteLine(name). In name befindet sich immer der aktuell durchlaufene Name. Wenn wir das Beispiel nun ausführen, sehen wir in der Konsole all diese vier Namen aus dem Array ausgegeben:
Was den Aufbau betrifft, ist das im Grunde alles, was man zur C# foreach Schleife sagen kann. Es gibt allerdings noch eine ganz wichtige Besonderheit, die ich dir gleich noch an einem praktischen Beispiel zeigen werde.
Sehen wir uns hierzu direkt ein weiteres Beispiel an.
3. Die C# foreach Schleife in der Praxis
Für unser Praxisbeispiel erstellen wir uns jetzt erst einmal eine Datenstruktur, die wir durchlaufen können. Hierfür wählen wir ein eindimensionales Array vom Typ Integer, welches wir numbers nennen. In das Array schreiben wir die Zahlen 10, 20, 25 und 40 und schließen das Ganze mit einem Semikolon ab:
Damit haben wir also das Array numbers erstellt. Jetzt versuchen wir, jede einzelne dieser Zahlen mit einer foreach Schleife zu durchlaufen.
Dafür schreiben wir wieder das Schlüsselwort foreach, gefolgt von einem Klammerpaar. In diesem Klammerpaar deklarieren wir jetzt eine Variable, in der sich immer das aktuell durchlaufene Objekt befinden soll.
Da es sich um Integer handelt, die wir in diesem Array durchlaufen, befindet sich das aktuell durchlaufene Objekt immer in der Integer Variable, die wir hier nun number nennen. Die Zahlen durchlaufen wir jetzt also im Array numbers, das wir oben erstellt haben:
Damit haben wir also auch eine foreach Schleife gebaut, die jede Zahl (number) in numbers durchläuft. Darunter können wir jetzt beispielsweise ein Console.WriteLine setzen und jede number somit auf der Konsole ausgeben:
Beim Starten des Programms sehen wir, dass es die Zahlen 10, 20, 25 und 40 in der Konsole ausgibt:
Wie ich vorhin erwähnt habe, möchte ich noch auf eine Besonderheit eingehen, die man unbedingt verstehen sollte.
Wenn man in C# foreach Schleifen nutzt, um bspw. die verschiedenen Objekte in einem Array zu durchlaufen, muss man verstehen, dass man die Variable, in der sich das aktuell durchlaufene Objekt befindet, nicht verändern kann. In unserem Beispiel ist das die Variable number.
Ich könnte also number nicht auf einen anderen Wert setzen, wie zum Beispiel 200:
Wie wir sehen, erhalten wir auch direkt einen Fehler, der folgendermaßen lautet:
Übersetzt bedeutet diese Fehlermeldung: „‘number‘ ist foreach Iterationsvariable. Eine Zuweisung ist daher nicht möglich.“
Es ist also sehr wichtig zu verstehen, dass man für den Versuch, dem Index einen anderen Wert zuzuweisen, den man aktuell durchläuft, eine normale for Schleife verwenden muss. Schließlich kann man in der C# foreach Schleife den Wert der Iterationsvariable nicht verändern.