Heim >Backend-Entwicklung >C++ >IEnumerable und IEnumerator in C#: Wie aktivieren sie foreach-Schleifen und benutzerdefinierte Iteratoren?
Umfassendes Verständnis von IEnumerable und IEnumerator: dem Kernmechanismus von .NET-Iteratoren
Bei der .NET-Programmierung ist die Implementierung der IEnumerable-Schnittstelle der Schlüssel zum Aktivieren von foreach-Schleifen. Obwohl die foreach-Syntax prägnant und einfach zu verwenden ist, besteht ihre zugrunde liegende Abhängigkeit von den Schnittstellen IEnumerable und IEnumerator.
Anwendungsszenarien von IEnumerable und IEnumerator
IEnumerable wird nicht verwendet, um foreach zu „ersetzen“, im Gegenteil, die Implementierung von IEnumerable ist eine Voraussetzung für die Verwendung von foreach. Wenn Sie eine foreach-Schleife schreiben, wandelt der Compiler sie tatsächlich in eine Reihe von Aufrufen der MoveNext- und Current-Methoden des IEnumerators um.
Der Unterschied zwischen IEnumerable und IEnumerator
Warum brauchen wir IEnumerable und IEnumerator?
implementiert IEnumerable
Um eine Klasse iterierbar zu machen, müssen Sie die IEnumerable-Schnittstelle implementieren, was die Implementierung der GetEnumerator-Methode erfordert, die einen IEnumerator zurückgibt.
Beispiel
Betrachten Sie die folgende benutzerdefinierte Objektklasse, die die IEnumerable-Schnittstelle implementiert:
<code class="language-csharp">public class CustomCollection : IEnumerable<int> { private int[] data; public IEnumerator<int> GetEnumerator() { return new CustomEnumerator(data); } IEnumerator IEnumerable.GetEnumerator() { return this.GetEnumerator(); } private class CustomEnumerator : IEnumerator<int> { // MoveNext 和 Current 方法用于遍历 data } }</code>
Durch die Implementierung von IEnumerable und die Bereitstellung eines benutzerdefinierten Enumerators können Sie jetzt eine foreach-Schleife verwenden, um Instanzen einer CustomCollection zu durchlaufen.
Das obige ist der detaillierte Inhalt vonIEnumerable und IEnumerator in C#: Wie aktivieren sie foreach-Schleifen und benutzerdefinierte Iteratoren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!