C# Language
IEnumerable
Suche…
Einführung
IEnumerable
ist die Basisschnittstelle für alle nicht generischen Sammlungen wie ArrayList, die aufgezählt werden können. IEnumerator<T>
ist die Basisschnittstelle für alle generischen Enumeratoren wie List <>.
IEnumerable
ist eine Schnittstelle, die die Methode GetEnumerator
. Die GetEnumerator
Methode gibt einen IEnumerator
der Optionen zum Durchlaufen der Auflistung wie foreach enthält.
Bemerkungen
IEnumerable ist die Basisschnittstelle für alle nicht generischen Sammlungen, die aufgelistet werden können
IEnumerable
In seiner einfachsten Form repräsentiert ein Objekt, das IEnumerable implementiert, eine Reihe von Objekten. Die fraglichen Objekte können mit dem Schlüsselwort c # foreach
wiederholt werden.
Im folgenden Beispiel implementiert das Objekt sequenceOfNumbers
IEnumerable. Es repräsentiert eine Reihe von ganzen Zahlen. Die foreach
Schleife durchläuft nacheinander jede.
int AddNumbers(IEnumerable<int> sequenceOfNumbers) {
int returnValue = 0;
foreach(int i in sequenceOfNumbers) {
returnValue += i;
}
return returnValue;
}
IEnumerable mit benutzerdefiniertem Enumerator
Durch die Implementierung der IEnumerable-Schnittstelle können Klassen auf dieselbe Weise wie BCL-Sammlungen aufgelistet werden. Dies erfordert die Erweiterung der Enumerator-Klasse, die den Status der Aufzählung verfolgt.
Neben dem Durchlaufen einer Standardsammlung sind folgende Beispiele zu nennen:
- Verwenden von Zahlenbereichen basierend auf einer Funktion anstelle einer Sammlung von Objekten
- Implementierung verschiedener Iterationsalgorithmen über Sammlungen, wie DFS oder BFS in einer Diagrammsammlung
public static void Main(string[] args) {
foreach (var coffee in new CoffeeCollection()) {
Console.WriteLine(coffee);
}
}
public class CoffeeCollection : IEnumerable {
private CoffeeEnumerator enumerator;
public CoffeeCollection() {
enumerator = new CoffeeEnumerator();
}
public IEnumerator GetEnumerator() {
return enumerator;
}
public class CoffeeEnumerator : IEnumerator {
string[] beverages = new string[3] { "espresso", "macchiato", "latte" };
int currentIndex = -1;
public object Current {
get {
return beverages[currentIndex];
}
}
public bool MoveNext() {
currentIndex++;
if (currentIndex < beverages.Length) {
return true;
}
return false;
}
public void Reset() {
currentIndex = 0;
}
}
}