Die foreach-Schleife wird verwendet, um alle Elemente in einer Auflistung aufzuzählen. Der Ausdruck in der foreach-Anweisung besteht aus zwei Elementen, die durch das Schlüsselwort in getrennt sind. Das Element rechts von in ist der Auflistungsname, und das Element links von in ist der Variablenname, der verwendet wird, um jedes Element in der Auflistung zu speichern.

Der Ausführungsprozess dieser Schleife ist wie folgt: Bei jeder Schleife wird ein neuer Elementwert aus der Auflistung entnommen und in eine schreibgeschützte Variable gelegt. Wenn der gesamte Ausdruck in Klammern true zurückgibt, können die Anweisungen im foreach-Block ausgeführt werden. Sobald auf alle Elemente in der Auflistung zugegriffen wurde, wird der Wert des gesamten Ausdrucks false, und der Steuerfluss geht zur Ausführungsanweisung nach dem foreach-Block über.

Die foreach-Anweisung wird häufig mit Arrays verwendet. Das folgende Beispiel verwendet die foreach-Anweisung, um Array-Werte zu lesen und anzuzeigen.

Array-Eigenschaft: Array.Length — die Kapazität des Arrays.

Mit dieser Eigenschaft können wir den Kapazitätswert ermitteln, den das Array-Objekt speichern kann, also die Länge des Arrays, die Anzahl der Elemente. Das ist leicht zu verstehen. Arrays haben auch andere Eigenschaften, wie die Dimension des Arrays usw. Die Verwendung von Eigenschaften ist relativ einfach; wenn man eine gelernt hat, ist das Format der anderen im Grunde dasselbe, daher geben wir hier keine Beispiele.

Wenn das Array viele Dimensionen oder eine große Kapazität hat, bietet C# die foreach-Anweisung, die speziell dazu dient, alle Elemente in einer Sammlung bzw. einem Array zu lesen. Wir nennen diese Funktion Traversierung. Die Syntax lautet wie folgt:

Traversieren eines Arrays: foreach (type objName in collection/Array)

Diese Anweisung prüft die im Array gespeicherten Variablenwerte nacheinander und entnimmt sie nacheinander. Hier ist type der Datentyp des Array-Objekts, das Sie lesen möchten, und wird in der Variablen objName gespeichert. objName definiert einen Variablennamen vom Typ type, der das jedes Mal aus der Sammlung bzw. dem Array (collection/Array) erhaltene Element darstellt. collection/Array ist das Array-Objekt, auf das zugegriffen werden soll. Mit dieser Methode müssen Sie nur eine foreach-Anweisung schreiben, um Arrays aller Dimensionen außer verzweigten Arrays zu durchlaufen.

Hinweis:Der Datentyp type von objName muss gleich groß wie oder größer als der Typ des collection/Array-Objekts sein.

Im Folgenden geben wir ein Beispiel für die Verwendung von foreach und for zum Durchlaufen eines regulären Arrays, das eine Methode zum Abrufen der Dimension eines Arrays umfasst und den Vorteil von foreach beim einmaligen Durchlaufen eines regulären Arrays vergleicht.

Beispiel

int[,,] a = new int[2, 2, 2] { {{ 1, 2 }, { 3,4}},{{ 5, 6 }, { 7,8}} };// Definiere ein 3-dimensionales Array a mit 2 Zeilen, 2 Spalten und 2 Tiefen
for (int i = 0; i < a.GetLength (0) ;i++ )   // Verwende Array.GetLength(n), um die Anzahl der Elemente in der Dimension bei [0,1,,,n] des Arrays zu ermitteln; 0 steht für Zeilen, 1 für Spalten und n dafür, dass dieses Array n+1-dimensional ist.
{
    for (int j = 0; j < a.GetLength(1); j++)
    {
        for (int z = 0; z < a.GetLength(2);z++ )// 2 steht für das Abrufen der Anzahl der Elemente in der Tiefendimension. Wenn das Array n Dimensionen hat, müssen Sie n for-Schleifen schreiben.
        {
            Console.WriteLine(a[i,j,z]);
        }
    }
}

Durchlaufen Sie a auf einmal mit einer foreach-Schleife

Beispiel

int[,,] a = new int[2, 2, 2] { {{ 1, 2 }, { 3,4}},{{ 5, 6 }, { 7,8}} };// Definiere ein 3-dimensionales Array a mit 2 Zeilen, 2 Spalten und 2 Tiefen
foreach(int i in a)
{
    Console .WriteLine (i);
}

Die Ausführungsergebnisse dieser beiden Codeabschnitte sind gleich: ein Element pro Zeile, insgesamt 8 Zeilen, und die Elemente sind 1 2 3 4 5 6 7 8.

Lassen Sie uns unten ein weiteres Beispiel machen. Es ist ein Beispiel für den Zugriff auf Array-Elemente mit for- und foreach-Schleifen. Fordern Sie zuerst den Benutzer auf, die Anzahl der Studenten einzugeben, und verwenden Sie dann die Anzahl der Studenten als Elementanzahl des Arrays names, das die Namen der Studenten speichert. Verwenden Sie eine for-Schleife, die bei Index i = 0 beginnt, geben Sie nacheinander die Aufforderung "Geben Sie den Studentennamen ein" aus und speichern Sie die vom Benutzer eingegebenen Studentennamen entsprechend ihrem Index im Array, d. h. names[i], im Array names. Die maximale Anzahl der for-Schleifeniterationen (d. h. der maximale Index) wird über die Array-Eigenschaft .Length ermittelt. Wir haben gesagt, dass die Beziehung zwischen Kapazität und Index index = Array.Length - 1 ist; in diesem Problem ist es der Maximalwert von i.

Es muss beachtet werden, dass Sie mit foreach die Elemente im Array nur einzeln abrufen können und diese Anweisung nicht verwenden können, um die im Array gespeicherten Elemente zu ändern.

C# foreach

Beispiel

using System;
class Program
{
    static void Main()
    {
        int count;
        Console.WriteLine("Geben Sie die Anzahl der anzumeldenden Studenten ein");
        count = int.Parse(Console.ReadLine());
        string[]names = new string[count];
        for (int i = 0; i < names.Länge; i++)
        {
            Console.WriteLine("Bitte geben Sie den Namen von Student {0} ein", i + 1);
            names[i] = Console.ReadLine();
        }
        Console.WriteLine("Die registrierten Studenten sind wie folgt");
        foreach (string name in names)
        {
            Console.WriteLine("{0}", name);
        }
        Console.ReadKey();
    }
}