Razlika med IEnumerable in IEnumeratorjem

Preden skočimo v razliko med IEnumerable in IEnumerator, najprej razumemo izraza Enumerator in Enumerable ter kdaj in zakaj ju uporabljati.

Enumerable je modul, ki se uporablja v razredu Array, ki vam daje Enumerator. Razred sam po sebi nima vsake metode. Pravzaprav uporablja metodo, imenovano "GetEnumerator", ki vam omogoča, da naštevalec naloži svoj izdelek.

Popisovalnik je predmet, ki vrne vsak element v zbirki v točno določenem vrstnem redu, točno tako, kot je zahtevano. Prevajalnik ustvari kodo, ki uporablja Enumerator, ko v C # pišete zanko foreach-a..

IEnumerator je vmesnik, ki ga izvaja popisovalec in števni razred izvaja vmesnik IEnumerable.

Kaj je nešteto?

IEnumerable je osnovni vmesnik, ki se uporablja za pridobitev predmeta, ki zna našteti (ali ponoviti) elemente v zbirki.

Gre za izvajanje vzorca iteratorja, ki zagotavlja mehanizem za premikanje predmeta v zbirki, ne glede na njegovo notranjo strukturo. Vmesnik IEnumerable predstavlja objekt, ki ga je mogoče ponoviti v zbirki.

Uporablja samo en način "GetEnumerator", ki vrne primerek razreda enumerator, ki izvaja vmesnik IEnumerator.

Kaj je Ienumerator?

Po drugi strani vmesnik IEnumerator razglaša dva načina - Reset () in MoveNext () - in eno lastnost Current. MoveNext () vrne logično vrednost, ki označuje konec seznama in pomaga pozicionirati prvi element na seznamu, potem ko pokliče metodo Reset () - popisalec postavi na privzeti položaj, tako da seznam ponovno ponovi s seznama začetek.

Trenutno lastnost lahko pokličete le skozi primerek vmesnika IEnumerator in ta vrne trenutni element na seznam.

Razlika med IEnumerable in IEnumeratorjem

Osnove IEnumerable in Ienumerator

IEnumerable in IEnumerator sta vmesnika, ki skupaj izvajata vzorec oblikovanja programske opreme iteratorja v .Net Framework. Okvir .Net omogoča dostop do posameznih elementov v zbirki po meri, hkrati pa uporablja vmesnike IEnumerable in IEnumerator. Vmesnik IEnumerable izjavi samo eno metodo imenovano GetEnumerator, ki vrne drugo vrsto vmesnika, imenovano vmesnik IEnumerator za to posebno zbirko. Po drugi strani je IEnumerator osnovni vmesnik za vse negenerične popisovalce, ki se uporabljajo za branje podatkov v zbirki. Vendar pa popisovalcev ni mogoče uporabiti za spreminjanje osnovne zbirke.

Metode

IEnumerable vmesnik definira samo eno metodo GetEnumerator (), ki je metoda primerka, uporabljena za več različnih tipov zbirke. Dobi iterator IEnumerator, ki ga lahko uporabite za ponavljanje vseh vrednosti iz zbirke. Ko v C # napišete zanko foreach, koda, ki jo ustvari, pokliče metodo GetEnumerator in ustvari Enumerator, ki ga uporablja zanka.

Po drugi strani IEnumerator uporablja dva načina MoveNext () in Reset () in lastnost Current. Metoda MoveNext () popelje popisovalca do naslednjega elementa zbirke, medtem ko metoda Reset () nastavi popisovalca na privzeti položaj, ki je pred prvim elementom zbirke.

Izvajanje

IEnumerable je splošni vmesnik, ki omogoča abstrakcijo za prekrivanje elementov in z implementacijo vmesnika IEnumerable generični razred v bistvu omogoča iteracijo prek vmesnika IEnumerator. Pri tem ti razredi na koncu nudijo skupen vmesnik za pridobivanje primerka predmeta IEnumerator, ki podpira vse osnovne naloge navigacijskih metod.

IEnumerator je osnovni vmesnik za popisovalce in uporaba IEnumerable vmesnika zahteva, da mora razred izvajati IEnumerator. Oba vmesnika je treba implementirati, če želite zagotoviti podporo foreach. Abstraktni razred 'AbstractEnumerator' izvaja vmesnik IEnumerator.

Funkcionalnost IEnumerable in IEnumeratorja

Vmesnik IEnumerable, skupaj s podpornim vmesnikom IEnumerator, omogoča ponovitev elementov v nizu z uporabo izjave 'foreach'. To je osnovni vmesnik, ki se uporablja za predmete vrste zbiranja. Ponavljanje se začne z zgornjim elementom v nizu in konča z najstarejšim elementom v nizu. Preprosto povedano, predstavlja objekt, ki ga je mogoče popisati.

Skupaj z vmesnikom IEnumerator omogočajo ponovitev elementov ArrayList na standardiziran, zaporeden način, začenši s prvim elementom in naprej. Izjava foreach uporablja metode in lastnosti vmesnika IEnumerator za ponavljanje vseh elementov v zbirki.

IEnumerable vs. IEnumerator: Primerjalna tabela

Povzetek številk verzov IEnumerator

Na kratko: IEnumerable in IEnumerator sta vmesnika, ki se uporabljata za naštevanje ali iteracijo razreda, ki ima naravo zbirke, kar pomeni, da omogočajo iterativni dostop do zbirke po meri. IEnumerable je splošni vmesnik, ki je na voljo za predmete vrste zbirke in z implementacijo vmesnika IEnumerable generični razred v bistvu omogoča iteracijo prek vmesnika IEnumerator. Uporablja samo en način GetEnumerator, ki vrne primerek razreda enumerator, ki izvaja vmesnik IEnumerator. Vmesnik IEnumerator naj bi se uporabljal kot dodatki in ga ni mogoče uporabiti za spreminjanje osnovne zbirke. Ponuja dve abstraktni metodi Reset () in MoveNext () in lastnost Current za klic določenega elementa v zbirki.