IEnumerable i IEnumerator

Anonim

Prije nego što skočimo u razliku između IEnumerable i IEnumerator, prvo ćemo razumjeti izraze Enumerator i Enumerator i kada i zašto ih koristiti.

Brojni su moduli koji se koriste u klasi Array koji vam daje popisivač. Sama klasa ne svaka metoda. Zapravo, koristi metodu pod nazivom 'GetEnumerator' koja vam daje popisivač za preuzimanje njegove stavke.

Enumerator je objekt koji vraća svaku stavku u zbirci u određenom redoslijedu, baš kako se traži. Kompilator generira kod koji koristi Enumerator, kada pišete čvor foreach u C #.

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

Što je brojna?

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

To je implementacija uzorka iteracije koja pruža mehanizam za prelazak objekta u zbirku bez obzira na unutarnju strukturu. IEnumerable sučelje predstavlja objekt koji se može ponovo iterirati u zbirci.

Ona koristi samo jednu metodu "GetEnumerator" koja vraća instancu klase enumeratora koja implementira IEnumerator sučelje.

Što je Ienumerator?

IEnumerator sučelje, s druge strane, izjavljuje dvije metode - Reset () i MoveNext () - i jedan entitet, Current. MoveNext () vraća Booleov val koji označava kraj popisa i pomaže u postavljanju prvog elementa na popisu nakon što nazove metodu Reset () - postavlja popisivač na zadanu poziciju tako da ponovno ponavlja popis s početak.

Aktualno svojstvo može se pozvati samo kroz instancu sučelja IEnumerator i vraća trenutni element na popisu.

Razlika između IEnumerable i IEnumerator

Osnove IEnumerable i Ienumerator

I IEnumerable i IEnumerator su sučelja koja implementiraju shemu dizajna softvera iteracije u.Net Framework zajedno..Net Framework omogućuje pristup pojedinačnim elementima u prilagođenu zbirku tijekom implementacije IEnumerable i IEnumerator sučelja. IEnumerable sučelje izjavljuje samo jednu metodu pod nazivom GetEnumerator koja vraća drugu vrstu sučelja naziva IEnumerator sučelje za tu određenu zbirku. IEnumerator, s druge strane, je bazno 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 temeljne zbirke.

metode

IEnumerable sučelje definira samo jednu metodu GetEnumerator (), koja je primjerna metoda koja se koristi na nekoliko različitih vrsta zbirki. Dobiva IEeratorator iterator koji se može koristiti za iteraciju nad svim vrijednostima iz zbirke. Kada napišete petlju foreach u C # kodu generira pozive metodu GetEnumerator za izradu Enumeratora koji koristi petlja.

IEnumerator, s druge strane, koristi dvije metode MoveNext () i Reset () i trenutni svojstvo. Metoda MoveNext () uzima popisivača na sljedeći element zbirke, a način Reset () postavlja popisivač na zadanu poziciju koja je prije prvog elementa zbirke.

izvršenje

IEnumerable je generičko sučelje koje pruža apstrakciju za petlje nad elementima i implementacijom IEnumerable sučelja, generička klasa u suštini omogućuje iteraciju preko sučelja IEnumerator. Pri tome, ove klase završavaju pružanjem zajedničkog sučelja za pronalaženje instanca IEnumeratora objekt koji podržava sve osnovne skupove navigacijskih metoda.

IEnumerator je bazno sučelje za popisivače i korištenje IEnumerable sučelja zahtijeva da klasa mora implementirati IEnumerator. Potrebno je provesti oba sučelja, ako želite pružiti podršku za foreach. Sažetak klase 'AbstractEnumerator' implementira IEnumerator sučelje.

Funkcionalnost IEnumerable i IEnumerator

IEnumerable sučelje, zajedno s podržanim sučeljem IEnumerator, omogućuje vam da iterate preko elemenata u stog koristeći 'foreach' izjavu. To je osnovno sučelje koje se koristi za objekte tipa zbirke. Iteracija počinje s vrhunskim elementom u stogu i završava s najstarijim elementom u stogu. Jednostavno rečeno, on predstavlja objekt koji se može nabrojati.

Zajedno s IEnumerator sučeljem, omogućuju elementima ArrayList da se iteriraju na standardizirani, sekvencijski način, počevši od prvog elementa i ide dalje. Izjava foreach koristi metode i svojstva IEnumerator sučelja za iteriranje svih elemenata u zbirci.

IEnumerable vs IEnumerator: Usporedba grafikona

Sažetak IEnumerable stih IEnumerator

Ukratko, oba IEnumerable i IEnumerator su sučelja koja se koriste za nabrajanje ili iteraciju klase koja ima zbirku prirode, što znači da olakšavaju iterativni pristup u prilagođenu zbirku. IEnumerable je generičko sučelje dostupno za objekte tipa zbirke i implementacijom IEnumerable sučelja, generička klasa u osnovi omogućuje iteraciju preko sučelja IEnumerator. Koristi samo jedan način GetEnumerator koji vraća instancu klase enumeratora koja implementira IEnumerator sučelje.IEnumerator sučelje se koristi kao pomoćni uređaj i ne može se koristiti za izmjenu temeljne zbirke. On pruža dvije apstraktne metode Reset () i MoveNext (), te svojstvo trenutnog za pozivanje određenog elementa u zbirci.