foreach
string[] plants = { "leaf", "mint" }; speichert zwei Wörter. Dann gibt foreach (string plant in plants) jedes Wort an den Namen plant, und Console.WriteLine(plant) schreibt es. Der Bildschirm zeigt zwei Zeilen: leaf, dann mint. Auf dieser Seite schreibst du keinen Indexzähler. Behalte den öffentlichen Klassennamen Pine.
Ein Name für jeden Wert im Array
Öffne die Pine-Datei. Der Klassenname bleibt Pine. Diese Seite benennt den Typ nicht um. Lösche jedes for mit break oder continue, falls diese Form noch da ist. Lösche ein gezähltes for (int i = 1; i <= 5; i = i + 1), falls es noch da ist. Lösche jede ReadLine-Zeile. Die Datei, die du behältst, wartet nicht auf Tippen, hat kein frühes break und keinen Indexzähler. Den Bildschirm schreibt nur die Schreibzeile in den geschweiften Klammern von foreach.
In Main speichere zuerst das Array: string[] plants = { "leaf", "mint" };. Diese Zeile schreibt den Bildschirm nicht. Sie hält nur zwei Wörter unter dem Namen plants. Dann die Schleife:
foreach (string plant in plants) {
Console.WriteLine(plant);
}
Das Wort foreach steht klein und als ein Wort. In den runden Klammern sitzen der Elementtyp string, der Name plant für ein Element, das Wort in, dann der Array-Name plants. Dieses in ist kein Pfad und keine case-Marke. Es markiert „jeder Wert aus plants geht in plant.“ Die geschweiften Klammern halten den Rumpf. Console.WriteLine(plant); schreibt das aktuelle Wort ohne Anführungszeichen um plant. Speichere die Datei.
Die Datei, die du behältst
Behalte diese Unterrichtsform. Ein string[] namens plants mit leaf, dann mint. Ein foreach mit string plant in plants. Eine Schreibzeile, die den nackten Namen plant schreibt. Es gibt keinen Index i, kein break und keine Anführungszeichen um plant.
using System;
public class Pine
{
public static void Main()
{
string[] plants = { "leaf", "mint" };
foreach (string plant in plants)
{
Console.WriteLine(plant);
}
}
}
Lies es von oben. using System; bereitet kurze Namen vor. public class Pine benennt den Typ. public static void Main() ist der Start der Laufzeit. string[] plants = { "leaf", "mint" }; speichert zwei Wörter. foreach (string plant in plants) läuft sie ab. Console.WriteLine(plant); schreibt jedes Wort. Zwei Zeilen auf dem Bildschirm: leaf, dann mint.
Starte es mit dotnet run. Das Programm schreibt zwei Zeilen und stoppt. Es wartet nicht darauf, dass du tippst. Wenn dotnet run wartet, steckt noch ReadLine in der Datei. Lösche diese Zeile und behalte das Array plus das foreach oben. Der Bildschirm zeigt leaf, dann mint. Zeigt der Bildschirm nur leaf, bist du vielleicht noch auf der Arrays-Seite, die einmal plants[0] schreibt. Ersetze das durch foreach. Zeigt der Bildschirm in jeder Zeile die Buchstaben plant, hat die Schreibzeile Anführungszeichen: Console.WriteLine("plant");. Zeigt der Bildschirm foreach als Buchstaben, hat eine Schreibzeile Anführungszeichen um dieses Wort. Installiere das .NET SDK nicht neu für einen Bildschirm mit falschen Zeilen.
Gehe einen vollen Lauf der Reihe nach durch. plants hält leaf, dann mint. Der erste Durchgang setzt plant auf leaf, und die Schreibzeile schreibt leaf. Der zweite Durchgang setzt plant auf mint und schreibt mint. Dann gibt es keine Werte mehr, also endet die Schleife. Auf dieser Seite hast du weder int i = 0 noch i < plants.Length geschrieben. Die foreach-Kopfzeile bittet C#, jeden gespeicherten Wert einmal zu besuchen. Der Name plant wird einmal in der Kopfzeile als string plant deklariert.
Ein int-Array auf dieselbe Weise durchlaufen
Ändere das gespeicherte Array und den Elementtyp, sodass jeder Wert eine ganze Zahl ist. Nutze int[] slots = { 2, 4, 6 }; und foreach (int n in slots) mit Console.WriteLine(n); im Rumpf. Jetzt soll der Bildschirm drei Zeilen zeigen: 2, dann 4, dann 6. Das Wort in sitzt weiterhin zwischen Elementname und Array-Name. Der Rumpf schreibt weiterhin den Namen, der ein Element hält.
using System;
public class Pine
{
public static void Main()
{
int[] slots = { 2, 4, 6 };
foreach (int n in slots)
{
Console.WriteLine(n);
}
}
}
Das ist die zweite Datei. Es ist nicht die Datei, die du behältst. Starte dotnet run. Der Bildschirm zeigt drei Zeilen. Du hast das string-Array durch ein int-Array ersetzt und den Typ des Elementnamens an int angepasst. Nachdem du 2, 4 und 6 gesehen hast, hol die behaltene Datei zurück: plants mit foreach (string plant in plants). Beide Versionen sind gültiges C#. Sie lehren dieselbe foreach-Form mit unterschiedlichen Elementarten.
Lies den int-Lauf noch einmal. slots hält 2, dann 4, dann 6. Der erste Durchgang setzt n auf 2 und schreibt es. Der zweite Durchgang setzt n auf 4 und schreibt es. Der dritte Durchgang setzt n auf 6 und schreibt es. Dann endet die Schleife. Um die Zahlen in den Array-Klammern stehen keine Anführungszeichen. Console.WriteLine(n) ohne Anführungszeichen um n schreibt diese gespeicherten Zahlen auf den Bildschirm.
Regeln, die foreach klar halten
Die runden Klammern müssen Typ, Name, in und Array-Name in dieser Reihenfolge halten. Schreibst du foreach (string plant plants) ohne in, schreibt der Build einen Fehler. Der Elementtyp muss zum Array passen: string mit einem string-Array, int mit einem int-Array. string plant neben einem int[]-Array ist nicht die Form, die diese Lektion baut. Geschweifte Klammern halten den Rumpf weiterhin, wenn der Rumpf eine oder mehrere Zeilen hat.
foreach ist nicht das gezählte for von der früheren Seite und nicht break von der vorherigen Seite. Das gezählte for schrieb Start, Test und Schritt mit einem Zähler. foreach läuft Werte ab, die schon in einem Array liegen. break beendet eine Schleife früh; die erste Demo dieser Seite schreibt jeden Wert. Lass keine break-Demo und kein schlichtes while im selben Main und wundere dich nicht, warum der Bildschirm 1 und 2 statt leaf und mint zeigt. Das Main dieser Sitzung soll nur das Array und das foreach halten.
Eine häufige Verwechslung ist, die Syntax selbst zu schreiben: Console.WriteLine("foreach");. Das schreibt die Zeichen foreach. Es läuft das Array nicht ab. Eine andere Verwechslung ist Console.WriteLine("plant"); mit Anführungszeichen, was bei jedem Durchgang das Wort plant schreibt statt leaf und mint. Behalte Console.WriteLine(plant) ohne Anführungszeichen, wenn du den Elementwert auf dem Bildschirm willst.
Wenn das Array keine Elemente hat — zum Beispiel string[] plants = { }; — läuft der Rumpf nie und der Bildschirm bleibt leer. Das ist trotzdem ein gültiges foreach; die Demos dieser Lektion halten mindestens zwei Werte, damit du die geschriebenen Zeilen siehst. Wenn du später eine Indexnummer auf dem Bildschirm brauchst, kommt das gezählte for zurück; foreach besucht Werte, ohne dass du diesen Index selbst führst. Einen Wert in der Schleife mit plant = "stem"; zu ändern, schreibt den Array-Slot in dieser Anfängerform nicht um — behandle plant als den Wert, den du zum Schreiben liest, nicht als Werkzeug zum Bearbeiten von plants.
Du kannst jetzt ein Array speichern, foreach (Type name in arrayName) schreiben und jeden Wert einmal schreiben. Wenn der Elementtyp zum Array passt, bleibt die Schleife baubar. Die nächste Seite sind methods: Dort gruppierst du Zeilen unter einem Namen, den du aus Main aufrufen kannst.
Der Bildschirm ist jeder Array-Wert
Die Datei, die du behältst, schreibt leaf, dann mint. Der Name plant steht in der Schreibzeile, und die Buchstaben plant stehen nicht als Label auf dem Bildschirm. Das Wort in steht in den runden Klammern, und in steht nicht auf dem Bildschirm. Anführungszeichen um plant oder um foreach schreiben Buchstaben, nicht den Array-Lauf.
🧠 Testen Sie Ihr Wissen
Testen Sie Ihr Wissen
Fordern Sie sich mit diesem interaktiven Quiz heraus und sehen Sie, wie gut Sie das Thema verstehen
📝 Anweisungen
- Lesen Sie jede Frage sorgfältig
- Wählen Sie die beste Antwort für jede Frage
- Sie können das Quiz so oft wiederholen, wie Sie möchten
- Ihr Fortschritt wird oben angezeigt