Da keine Beispiele angegeben wurden, ist hier eines, das mir hilfreich war.
Ein Enumerator ist ein Objekt, das Sie erhalten, wenn Sie .GetEnumerator () für eine Klasse oder einen Typ aufrufen, der die IEnumerator-Schnittstelle implementiert. Wenn diese Schnittstelle implementiert ist, haben Sie den gesamten Code erstellt, der für den Compiler erforderlich ist, damit Sie foreach
Ihre Sammlung "iterieren" können.
Verwechseln Sie das Wort "iterieren" nicht mit dem Iterator. Sowohl mit dem Enumerator als auch mit dem Iterator können Sie "iterieren". Aufzählung und Iteration sind im Grunde der gleiche Prozess, werden jedoch unterschiedlich implementiert. Aufzählung bedeutet, dass Sie die IEnumerator-Schnittstelle implementiert haben Iterieren bedeutet, dass Sie das Iterator-Konstrukt in Ihrer Klasse erstellt haben (siehe unten) und foreach
Ihre Klasse aufrufen. Zu diesem Zeitpunkt erstellt der Compiler automatisch die Enumerator-Funktionalität für Sie.
Beachten Sie auch, dass Sie nicht mit Ihrem Enumerator in die Hocke gehen müssen. Sie können den MyClass.GetEnumerator()
ganzen Tag anrufen und nichts damit anfangen (Beispiel:
IEnumerator myEnumeratorThatIWillDoNothingWith = MyClass.GetEnumerator()
).
Beachten Sie auch, dass Ihr Iterator-Konstrukt in Ihrer Klasse nur dann wirklich verwendet wird, wenn Sie es tatsächlich verwenden, dh Sie haben foreach
Ihre Klasse aufgerufen .
Hier ist ein Iterator-Beispiel von msdn :
public class DaysOfTheWeek : System.Collections.IEnumerable
{
string[] days = { "Sun", "Mon", "Tue", "Wed", "Thr", "Fri", "Sat" };
public System.Collections.IEnumerator GetEnumerator()
{
for (int i = 0; i < days.Length; i++)
{
yield return days[i];
}
}
}
class TestDaysOfTheWeek
{
static void Main()
{
DaysOfTheWeek week = new DaysOfTheWeek();
foreach (string day in week)
{
System.Console.Write(day + " ");
}
}
}