Heim >Backend-Entwicklung >C++ >Welche Klassen in C# unterstützen Foreach-Schleifen?
Tiefer Einblick in foreach-Schleifen in C#: Welche Klassen können verwendet werden?
Die foreach-Schleife in C# ist eine wesentliche Funktion, die es Programmierern ermöglicht, problemlos über Elemente in einer Sammlung zu iterieren. Für eine effektive Nutzung ist es jedoch entscheidend zu verstehen, welche Klassen foreach-Schleifen verwenden können.
Klassen, die foreach-Schleife unterstützen
Nicht alle Klassen unterstützen foreach-Schleifen. Nur Klassen, die bestimmte Bedingungen erfüllen, können die foreach-Schleife verwenden. Der Antwort zufolge liegt der Schlüssel darin, dass es in der Klasse eine öffentliche GetEnumerator()
-Methode gibt. Diese Methode sollte ein Objekt mit bool MoveNext()
Methoden und Current
Eigenschaften vom Typ T zurückgeben.
Gemeinsame Implementierungsmethoden
Tatsächlich besteht die üblichere Interpretation dieser Anforderung darin, die Schnittstelle IEnumerable
/IEnumerable<T>
zu implementieren. Diese Schnittstellen erfordern das Vorhandensein von IEnumerator
/IEnumerator<T>
.
Unterstützte Datenstrukturen
Klassen, die die ICollection
/ICollection<T>
-Schnittstelle implementieren, unterstützen implizit auch foreach-Schleifen. Dazu gehören Standardsammlungstypen wie Collection<T>
, List<T>
und Arrays (T[]). Daher können die am häufigsten verwendeten „Datensammlungen“ mithilfe einer foreach-Schleife durchlaufen werden.
So funktioniert die foreach-Schleife
Eine foreach-Schleife wie foreach (int i in obj) { ... }
sieht intern wie die folgende Codestruktur aus:
<code class="language-csharp">var tmp = obj.GetEnumerator(); int i; // C# 4.0 之前 while (tmp.MoveNext()) { int i; // C# 5.0 及之后 i = tmp.Current; { ... } // 你的代码 }</code>
Variationen und Anmerkungen
IDisposable
implementiert, wird er wie ein using
-Block aufgerufen, um eine ordnungsgemäße Entsorgung sicherzustellen. int i
) außerhalb des Schleifenkörpers platziert; ab C# 5.0 wird sie innerhalb des Schleifenkörpers deklariert. Diese Unterscheidung wird wichtig, wenn Schleifenvariablen innerhalb verschachtelter anonymer Methoden oder Lambda-Ausdrücke verwendet werden. Das obige ist der detaillierte Inhalt vonWelche Klassen in C# unterstützen Foreach-Schleifen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!