Razlika između IEnumerable i IEnumerator

Prije nego što skoknemo do razlike između IEnumerable i IEnumerator, razumjet ćemo najprije pojmove Enumerator i Enumerable te kada i zašto ih koristiti.

Enumerable je modul koji se koristi u klasi Array koji vam daje Enumerator. Klasa sama po sebi nije svaka metoda. Zapravo se koristi metoda koja se zove "GetEnumerator" koja vam omogućava popisivaču da preuzme svoj predmet.

Popisnik je objekt koji svaku stavku u zbirci vraća točno određenim redoslijedom. Pri pisanju petlje foreach u C #, prevoditelj stvara kôd koji koristi Enumerator..

IEnumerator je sučelje koje implementira popisivač, a brojljiva klasa implementira IEnumerable sučelje.

Što je nebrojeno?

IEnumerable je osnovno sučelje koje se koristi za dobivanje objekta koji zna nabrojati (ili ponoviti) preko elemenata u kolekciji.

To je implementacija iteratorskog uzorka koji pruža mehanizam za prolazak predmeta u zbirci bez obzira na njegovu unutarnju strukturu. IEnumerable sučelje predstavlja objekt koji se može ponoviti u kolekciji.

Koristi samo jednu metodu "GetEnumerator" koja vraća instancu klase popisivača koja implementira IEnumerator sučelje.

Što je Ienumerator?

IEnumerator sučelje, s druge strane, izjavljuje dvije metode - Reset () i MoveNext () - i jedno svojstvo, Current. MoveNext () vraća booleov vale koji označava kraj popisa i pomaže pozicionirati prvi element na popisu nakon poziva Reset () - popisivač će postaviti na zadani položaj tako da se popis može ponovno ponoviti s početak.

Trenutni entitet može se pozvati samo kroz instancu IEnumerator sučelja i on vraća trenutni element na popis.

Razlika između IEnumerable i IEnumerator

Osnove IEnumerable i Ienumerator

IEnumerable i IEnumerator su sučelja koja zajedno implementiraju obrazac dizajna softvera iterator u .Net Framework. .Net Framework omogućuje pristup pojedinačnim elementima u prilagođenoj kolekciji, a pritom implementira IEnumerable i IEnumerator sučelja. IEnumerable sučelje izjavljuje samo jednu metodu koja se zove GetEnumerator, a koja vraća drugu vrstu sučelja pod nazivom IEnumerator sučelje za tu određenu kolekciju. S druge strane, IEnumerator je osnovno sučelje za sve ne generičke popisivače koji se koriste za čitanje podataka u zbirci. Međutim, popisivači se ne mogu koristiti za izmjenu dotične zbirke.

metode

IEnumerable sučelje definira samo jednu metodu GetEnumerator () koja je metoda primjeraka koja se koristi za nekoliko različitih vrsta zbirki. Dobiva iterator IEnumerator koji se može koristiti za ponavljanje svih vrijednosti iz kolekcije. Kada napišete petlju foreach u C #, kôd koji generira poziva GetEnumerator metodu za stvaranje Enumeratora koji koristi petlja.

S druge strane, IEnumerator koristi dvije metode MoveNext () i Reset () i svojstvo Current. Metoda MoveNext () vodi popisivača na sljedeći element zbirke, dok metoda Reset () postavlja popisivača na njegov zadani položaj, koji je prije prvog elementa u zbirci.

izvršenje

IEnumerable je generičko sučelje koje pruža apstrakciju za prebacivanje elemenata i primjenom IEnumerable sučelja, generička klasa u osnovi omogućuje iteraciju preko IEnumerator sučelja. Pri tome ove klase pružaju zajedničko sučelje za dohvat instancije IEnumerator objekta koji podržava sve osnovne skupove navigacijskih metoda.

IEnumerator je osnovno sučelje za popisivače, a korištenje IEnumerable sučelja zahtijeva da klasa mora implementirati IEnumerator. Oba sučelja se moraju implementirati ako želite pružiti podršku za foreach. Apstraktna klasa 'AbstractEnumerator' implementira IEnumerator sučelje.

Funkcionalnost IEnumerable i IEnumerator

IEnumerable sučelje, zajedno s podrškom za IEnumerator sučelje, omogućava vam ponavljanje elemenata u nizu pomoću izraza 'foreach'. To je osnovno sučelje koje se koristi za objekte tipa kolekcije. Ponavljanje započinje gornjim elementom u snopu i završava najstarijim elementom u nizu. Jednostavno rečeno, predstavlja objekt koji se može nabrojati.

Zajedno s IEnumerator sučeljem, oni omogućuju ponavljanje ArrayList elemenata na standardizirani, uzastopni način, počevši od prvog elementa i ide prema naprijed. Izjava foreach koristi metode i svojstva sučelja IEnumerator za ponavljanje svih elemenata u kolekciji.

IEnumerable vs. IEnumerator: Usporedni grafikon

Sažetak IEbrojnih stihova IEnumerator

Ukratko, IEnumerable i IEnumerator su sučelja koja se koriste za nabrajanje ili ponavljanje klase koja ima prirodu zbirke što znači da omogućuju iterativni pristup prilagođenoj zbirci. IEnumerable je generičko sučelje dostupno za objekte tipa kolekcije i primjenom IEnumerable sučelja generička klasa u osnovi omogućava iteraciju preko IEnumerator sučelja. Koristi samo jednu metodu GetEnumerator koja vraća instancu klase popisivača koja implementira IEnumerator sučelje. IEnumerator sučelje se koristi kao pristup i ne može se koristiti za modificiranje temeljne kolekcije. Pruža dvije apstraktne metode Reset () i MoveNext (), i svojstvo Current za pozivanje određenog elementa u kolekciji.