IEnumerable und IEnumerator sind beide in C# verfügbare Schnittstellen. Ersteres ist ein Modul, während letzteres ein Objekt ist.
IEnumerable erzeugt IEnumerator. Hier wird GetEnumerator verwendet, um IEnumerator abzurufen, und jede Schleife wird zum Generieren von Code verwendet, der Enumerator verwendet. Ein Enumerator unterscheidet sich von IEnumerator, da IEnumerator eine Schnittstelle ist. Der Enumerator implementiert es.
Key Take Away
- IEnumerable ist eine Schnittstelle, die das Iterieren über eine Sammlung von Objekten ermöglicht, während IEnumerator eine Klasse ist, die die IEnumerator-Schnittstelle implementiert und Methoden zum Durchlaufen einer Sammlung bereitstellt.
- IEnumerable stellt eine einzelne Methode (GetEnumerator) bereit, die ein IEnumerator-Objekt zurückgibt, während IEnumerator Methoden zum Navigieren durch die Sammlung (MoveNext) und zum Abrufen des aktuellen Objekts (Current) bereitstellt.
- IEnumerable wird verwendet, um Sammlungen zu erstellen, die durchlaufen werden können, während IEnumerator verwendet wird, um diese Sammlungen zu durchlaufen.
IEnumerable vs. IEnumerator
Der Unterschied zwischen IEnumerable und IEnumerator besteht darin, dass IEnumerable für die generische Schnittstelle funktioniert und IEnumerator für alle nicht generischen Schnittstellen funktioniert. IEnumerable zeigt auf ein Objekt, das aufgezählt werden kann, aber IEnumerator wird implementiert, indem jede Anweisung zur Iteration verwendet wird. Die IEnumerable-Schnittstelle verwendet den IEnumerator für die Iteration aller für jede Anweisung verwendeten Elemente.
IEnumerable wird verwendet, um ein Objekt zu finden, das als Schnittstelle verwendet wird. Es wird für die Iteration aller Elemente in der Sammlung verwendet.
Der Iterationsprozess erleichtert das Durchlaufen der Sammlung. Es fungiert als Objekt. GetEnumerator ist eine Methode, die für die Implementierung der IEnumerator-Schnittstelle verwendet wird.
IEnumerator hat zwei Methoden, Reset() und MoveNext(), und hat eine erweiterte Eigenschaft, die als Current bekannt ist. MoveNext() ist eine Methode, die einen booleschen Wert erzeugt, der auf das Endelement der Liste hinweist. Die Reset-Methode macht den Enumerator zu seiner Standardposition.
Vergleichstabelle
Vergleichsparameter | IEzählbar | IEZähler |
---|---|---|
Art der Schnittstelle | Generisch | Nicht generisch |
Anzahl der Methoden | Eins | Zwei |
Rücksendungen | IEZähler | Keine |
Cursor-Zustand | Kann nicht beibehalten werden | Kann behalten |
Produkt | Aufgezähltes Objekt | Für jedes Anweisungsergebnis |
Art zu schreiben | Abstrakt | Beton |
Was ist IEnumerable?
Dies ist eine Schnittstelle, die von einer aufzählbaren Klasse implementiert wird. Die gesamte Sammlung in C# kann eine IEnumerable-Schnittstelle implementieren. Sie gibt IEnumerator zurück. Sie ändert sich nicht gemäß den im Code verwendeten Zugriffsspezifizierern.
IEnumerable hat eine Methode, die als GetEnumerator bekannt ist. Diese Implementierung erfolgt nur innerhalb der Klasse.
Der Iterationsprozess erleichtert das Durchlaufen der Sammlung. Es fungiert als Objekt. GetEnumerator ist eine Methode, die für die Implementierung der IEnumerator-Schnittstelle verwendet wird.
IEnumerable ist als generische Schnittstelle bekannt, da der Code sehr klein geschrieben wird, da er nur eine einmalige Implementierung erfordert. Es spielt keine Rolle, wie viele Konstruktoren in der Codeimplementierung zum Iterieren aller Elemente verwendet werden.
Der Code erfordert nur geringen Wartungsaufwand, da die Codeänderungen auf einer Plattform erfolgen und keine zusätzlichen Änderungen erfordern. Er verwendet Abstraktion für die Iteration aller Elemente im Array.
Es verwendet einen IEnumerator-Iterator, der für die Iteration aller Elemente verwendet wird. Da es sich um eine generische Klasse handelt, ist die Iteration der Elemente im Array problemlos möglich. Es stellt eine gemeinsame Schnittstelle bereit. Es wird in allen nicht generischen Klassen verwendet.
Was ist IEnumerator?
Es verfügt über zwei Methoden, um die Iteration aller Elemente in der Sammlung zu implementieren. Es hat zwei Methoden, nämlich MoveNext und Reset. MoveNext ist eine Methode, die darauf hinweist, dass die Iteration das letzte Element der Auflistung nicht erreicht hat.
Die Reset-Methode macht das Gleiche, wie es sich anhört. Es weist darauf hin, die Iteration erneut zu starten, nachdem die vorherige Iteration bis zum letzten Element des Arrays durchgeführt wurde.
Zuletzt ist das eine Objekt Current, das das aktuelle Element als Ergebnis der Iteration liefert. Es hat einen bestimmten Zugriff auf seine Elemente. Es bietet nur Lesezugriff auf sein gesamtes Array.
Der IEnumerator ruft die aktuelle Eigenschaft auf, die für die Rückgabe des Elements in der aktuell verwendeten Liste verantwortlich ist. Es verwendet zwei Methoden und die Eigenschaft für die Iteration des Objekts.
Jede Anweisung verwendet die Array-Liste, startet die Iteration, indem sie vorwärts geht, und verwendet eine der Methoden. IEnumerator kann IEnumerable nicht zurückgeben.
Es kann leicht den aktuellen Status des Cursors wiederherstellen. IEnumerator verwendet eine konkrete Schreibweise. Es beginnt die Iteration im Stapel, indem es das erste Element des Stapels iteriert und endet mit dem letzten Element des Stapels.
Hauptunterschiede zwischen IEnumerable und IEnumerator
- IEnumerable wird für die generische Schnittstelle verwendet, IEnumerator wird jedoch für die nicht generische Schnittstelle verwendet.
- IEnumerable hat nur eine Methode, während IEnumerator nur zwei Methoden hat.
- IEnumerable kann IEnumerator zurückgeben, aber IEnumerator kann IEnumerable nicht zurückgeben.
- IEnumerable kann den aktuellen Status des Cursors nicht beibehalten, IEnumerator kann ihn jedoch beibehalten.
- IEnumerable zeigt ein aufgezähltes Objekt an, während IEnumerator eines für jede Anweisung hat.
- IEnumerable ist eine abstrakte Schreibweise, IEnumerator verwendet jedoch konkrete Schreibweise.