Unterschied zwischen iEnumerable und Ienumerator
- 3819
- 275
- Milana Battke
Bevor wir in den Unterschied zwischen IEnumerable und Ienumerator eingehen.
Aufzählbar ist ein Modul, das in der Array -Klasse verwendet wird, die Ihnen den Aufzähler gibt. Die Klasse selbst nicht jede Methode. Tatsächlich verwendet es eine Methode namens "Getenumerator", die Ihnen einen Enumerator gibt, um sein Element abzurufen.
Ein Enumerator ist ein Objekt, das jedes Element in einer Sammlung in einer bestimmten Reihenfolge zurückgibt, genau so wie er angefordert wird. Der Compiler generiert Code, der einen Enumerator verwendet, wenn Sie eine Foreach -Schleife in C# schreiben.
IEnumerator ist eine Schnittstelle, die von einem Enumerator implementiert wird, und die aufzählbare Klasse implementiert die IEnumerable -Schnittstelle.
Was ist iEnumerable??
IEnumerable ist eine grundlegende Schnittstelle, mit der ein Objekt erhält.
Es handelt sich um eine Implementierung des Iteratormuster. Die Ienumerable -Schnittstelle repräsentiert ein Objekt, das in einer Sammlung iteriert werden kann.
Es verwendet nur eine Methode „Getenumerator“, die eine Enderator -Klasse -Instanz zurückgibt, die die IEnumerator -Schnittstelle implementiert.
Was ist Ienumerator?
Die IEnumerator -Schnittstelle, von der andere Seite, deklariert zwei Methoden - Reset () und MoveNext () - und eine Eigenschaft, aktuell. Der MoveNext () gibt einen booleschen Tal zurück, der das Ende der Liste angibt und das erste Element in der Liste nach dem Aufrufen der reset () -Methode positioniert - sie hat den Enumerator in seine Standardposition so festgelegt Anfang.
Die aktuelle Eigenschaft kann nur über eine Instanz der IEnumerator -Schnittstelle aufgerufen werden und gibt das aktuelle Element in der Liste zurück.
Unterschied zwischen iEnumerable und Ienumerator
Grundlagen von Ienumerable und Ienumerator
Sowohl Ienumerable als auch IEnumerator sind Schnittstellen, die das Iterator -Software -Designmuster in der Implementierung implementieren .Netto -Framework zusammen. Der .NET Framework macht den Zugriff auf einzelne Elemente in der benutzerdefinierten Sammlung und implementiert iEnumerable- und Ienumerator -Schnittstellen. Die IEnumerable -Schnittstelle deklariert nur eine Methode namens Gortenumerator, die eine andere Art von Schnittstelle zurückgibt, die als IEnumerator -Schnittstelle für diese bestimmte Sammlung bezeichnet wird. Ienumerator hingegen ist die Grundschnittstelle für alle nicht generischen Enzeratoren, die zum Lesen der Daten in der Sammlung verwendet werden. Aufzähler können jedoch nicht verwendet werden, um die zugrunde liegende Sammlung zu ändern.
Methoden
Die Ienumerable -Schnittstelle definiert nur eine Methode Getenumerator (), eine Instanzmethode, die für verschiedene Sammlungstypen verwendet wird. Es erhält einen Ienumerator -Iterator, mit dem alle Werte aus der Sammlung iteriert werden können. Wenn Sie eine Foreach -Schleife in C# schreiben, wird der Code generiert, um die Getenumerator -Methode zu erstellen, um den von der Schleife verwendeten Enumerator zu erstellen.
Ienumerator dagegen verwendet zwei Methoden MoveNext () und Reset () und einen Eigenschaftsstrom. Die Methode moveExtext () bringt den Enumerator zum nächsten Element der Sammlung, während Reset () -Methode den Enumerator in seine Standardposition setzt, die vor dem ersten Element in der Sammlung liegt.
Implementierung
IEnumerable ist eine generische Schnittstelle, die eine Abstraktion zum Schlaufing über Elemente und durch die Implementierung der IEnumerable -Schnittstelle bietet, ermöglicht eine generische Klasse die Iteration über die IEnumerator -Schnittstelle im Wesentlichen. Auf diese Weise bieten diese Klassen eine gemeinsame Schnittstelle, um eine Instanz eines Ienumerator -Objekts abzurufen, das alle grundlegenden Navigationsmethoden unterstützt.
IEnumerator ist die Basisschnittstelle für Enzeratoren und die Verwendung der IEnumerable -Schnittstelle erfordert, dass die Klasse den IEnumerator implementieren muss. Beide Schnittstellen müssen implementiert werden, wenn Sie Unterstützung für foreach leisten möchten. Die abstrakte Klasse 'Abstractenumerator' implementiert die Ienumerator -Schnittstelle.
Funktionalität von Ienumerable und Ienumerator
Mit der IEnumerable -Schnittstelle sowie der unterstützenden IEnumerator -Schnittstelle können Sie die Elemente im Stapel mit der Anweisung "Foreach" über die Elemente im Stapel iterieren. Es ist die grundlegende Schnittstelle, die für Sammlungstypobjekte verwendet wird. Die Iteration beginnt mit dem oberen Element im Stapel und endet mit dem ältesten Element im Stapel. Einfach ausgedrückt, es repräsentiert ein Objekt, das aufgezählt werden kann.
Zusammen mit der Ienumerator -Schnittstelle können die ArrayList -Elemente standardisiert, sequentiell iteriert werden, beginnend mit dem ersten Element und in Zukunft. Die Foreach -Anweisung verwendet die Methoden und Eigenschaften der Ienumerator -Schnittstelle, um alle Elemente in einer Sammlung zu iterieren.
Ienumerable vs. Ienumerator: Vergleichstabelle
Zusammenfassung des iEnumerablen Verse Ienumerator
Kurz gesagt, sowohl iEnumerable als auch iEnumerator sind Schnittstellen, mit denen eine Klasse aufgezählt oder iteriert wird, die eine Sammlung hat, was bedeutet, dass sie den iterativen Zugang in einer benutzerdefinierten Sammlung erleichtern. IEnumerable ist die generische Schnittstelle für die Objekte von Sammelstypen und durch die Implementierung der IEnumerable -Schnittstelle ermöglicht eine generische Klasse im Wesentlichen die Iteration über die IEnumerator -Schnittstelle. Es verwendet nur eine Methode Getenumerator, die eine Enderator -Klasse -Instanz zurückgibt, die die IEnumerator -Schnittstelle implementiert. Die Ienumerator -Schnittstelle soll als Accessor verwendet werden und kann nicht verwendet werden, um die zugrunde liegende Sammlung zu ändern. Es bietet zwei abstrakte Methoden Reset () und MoveNext () sowie einen Eigenschaftsstrom, um ein bestimmtes Element in einer Sammlung aufzurufen.
- « Unterschied zwischen statischer Malwareanalyse und dynamischer Malwareanalyse
- Unterschied zwischen Basalzellen und Plattenepithelkarzinom »