Różnica między IEnumerable i IEnumerator

Różnica między IEnumerable i IEnumerator

Zanim przejdziemy w różnicę między IEnumerable i IEnumerator, najpierw zrozummy terminy wyliczające i wymyślne oraz kiedy i dlaczego ich używać.

Enumerable to moduł używany w klasie tablicy, który zapewnia wyliczenie. Sama klasa nie ma każdej metody. W rzeczywistości wykorzystuje metodę o nazwie „geteNumerator”, która daje wyliczenie do odzyskania przedmiotu.

Enumerator to obiekt, który zwraca każdy element w kolekcji w określonej kolejności, dokładnie tak, jak są żądane. Kompilator generuje kod, który korzysta z wyliczania, gdy piszesz pętlę foreach w C#.

IEnumerator to interfejs zaimplementowany przez wyliczenie, a klasa wyliczalna implementuje interfejs IEnumerable.

Co jest one -emerable?

IEnumerable to podstawowy interfejs używany do uzyskania obiektu, który wie, jak wyliczyć (lub iterować) w elementach w kolekcji.

Jest to implementacja wzoru iteratora, który zapewnia mechanizm przemieszczania obiektu w kolekcji niezależnie od jego wewnętrznej struktury. Interfejs INumerable reprezentuje obiekt, który może zostać iterowany w kolekcji.

Używa tylko jednej metody „geteNumerator”, która zwraca instancję klasy wyliczania, która implementuje interfejs IEnumerator.

Co to jest IEnumerator?

Interfejs IENumerator, po drugiej stronie, deklaruje dwie metody - reset () i movenext () - i jedna właściwość, prąd,. Movenext () zwraca Vale logiczną, która wskazuje koniec listy i pomaga umieścić pierwszy element na liście po wywołaniu metody RESET () - ustawienie wyliczającego w pozycji domyślnej, aby powtórzyć listę z listy z początek.

Obecną właściwość można wywołać tylko za pomocą instancji interfejsu IEnumerator i zwraca bieżący element na liście.

Różnica między IEnumerable i IEnumerator

Podstawy IEnumerable i IEnumerator

Zarówno IEnumerable, jak i IEnumerator są interfejsami, które wdrażają wzór projektu oprogramowania iterator w .Ramy netto razem. .Net Framework sprawia, że ​​dostęp do poszczególnych elementów w kolekcji niestandardowej podczas wdrażania interfejsów IENumerable i IENumerator. INumerable interfejs deklaruje tylko jedną metodę o nazwie GetEnumerator, która zwraca inny typ interfejsu o nazwie interfejs IEnumerator dla tej konkretnej kolekcji. Z drugiej strony IEnumerator jest interfejsem podstawowym dla wszystkich niegenerowych wyliczających, które są używane do odczytu danych w kolekcji. Jednak do modyfikacji kolekcji podstawowej nie można użyć.

Metody

Interfejs Ienumerable definiuje tylko jedną metodę getenumerator (), która jest metodą instancji stosowaną w kilku różnych typach kolekcji. Dostaje iterator IEnumerator, którego można użyć do iteracji wszystkich wartości z kolekcji. Kiedy piszesz pętlę foreach w C# kod generuje wywołanie metody geteNumerator do utworzenia wyliczania używanego przez pętlę.

IEnumerator, z drugiej strony, używa dwóch metod movenext () i reset () oraz prądu właściwości. Metoda moveNext () przenosi wyliczenie do następnego elementu kolekcji, podczas gdy metoda RESET () ustawia wyliczenie do jego domyślnej pozycji, która jest przed pierwszym elementem w kolekcji.

Realizacja

IEnumerable to ogólny interfejs, który zapewnia abstrakcję do zapętlania elementów i wdrażając interfejs IENUMERABLE, klasa ogólna zasadniczo umożliwia iterację za pośrednictwem interfejsu IEnumerator. W ten sposób klasy te dostarczają wspólnego interfejsu w celu odzyskania instancji obiektu IEnumerator, który obsługuje wszystkie podstawowe zestaw metod nawigacji.

IEnumerator jest interfejsem podstawowym dla wyliczających, a użycie interfejsu IEnumerable wymaga, aby klasa musiała zaimplementować IEnumerator. Oba interfejsy należy wdrożyć, jeśli chcesz zapewnić wsparcie dla Foreach. Klasa abstrakcyjna „Abstractenumerator” implementuje interfejs IEnumerator.

Funkcjonalność IENUMERABLE i IENUMERator

Interfejs INumerable, wraz z obsługą interfejsu IENumerator, pozwala iterować elementy w stosie za pomocą instrukcji „Foreach”. Jest to podstawowy interfejs używany do obiektów typu kolekcji. Iteracja zaczyna się od górnego elementu w stosie, a kończy najstarszym elementem w stosie. Mówiąc najprościej, reprezentuje obiekt, który można wyliczyć.

Razem z interfejsem IEnumerator umożliwiają one iterowanie elementów ArrayList w standardowy, sekwencyjny sposób, zaczynając od pierwszego elementu i idąc naprzód. Instrukcja Foreach wykorzystuje metody i właściwości interfejsu IEnumerator, aby iterować wszystkie elementy w kolekcji.

Ienumerable vs. IEnumerator: Mapa porównawcza

Podsumowanie wersji IEnumerable IENumerator

Krótko mówiąc, zarówno IEnumerable, jak i IEnumerator są interfejsami używanymi do wyliczenia lub iteracji klasy, która ma charakter kolekcji, co oznacza, że ​​ułatwiają iteracyjny dostęp do kolekcji niestandardowej. IEnumerable to ogólny interfejs dostępny dla obiektów typu kolekcji, a poprzez implementację interfejsu IENumerable klasa ogólna zasadniczo umożliwia iterację za pośrednictwem interfejsu IEnumerator. Używa tylko jednej metody geteNumerator, która zwraca instancję klasy wyliczania, która implementuje interfejs IEnumerator. Interfejs IENumerator ma być używany jako akcesorory i nie można go użyć do modyfikacji podstawowej kolekcji. Zapewnia dwie abstrakcyjne metody RESET () i MovenExt () oraz właściwość bieżąca, aby wywołać konkretny element w kolekcji.