Ero lukemattoman ja laskurin välillä

Ennen kuin hyppäämme eroon IEnumerable ja IEnumerator, ymmärrämme ensin termit Enumerator ja Enumerable ja milloin ja miksi niitä käytetään.

Enumerable on Array-luokassa käytetty moduuli, joka antaa sinulle Enumeratorin. Itse luokka ei kukin menetelmä. Itse asiassa se käyttää menetelmää nimeltä 'GetEnumerator', joka antaa sinulle Enumerator noutaa kohteen.

Enumerator on esine, joka palauttaa kaikki kokoelman kohteet tietyssä järjestyksessä, täsmälleen sellaisina kuin niitä pyydetään. Kääntäjä luo koodin, joka käyttää Enumeratoria, kun kirjoitat foreach-silmukkaan C #.

IEnumerator on luetelijan toteuttama käyttöliittymä ja lueteltava luokka toteuttaa IEnumerable-liitännän.

Mikä on lukematon?

IEnumerable on perusrajapinta, jota käytetään objektin hankkimiseen, joka osaa luetella (tai iteroida) kokoelman elementtejä.

Se on iteraattorikuvion toteutus, joka tarjoaa mekanismin objektin kuljettamiseksi kokoelmassa riippumatta sen sisäisestä rakenteesta. Lukematon käyttöliittymä edustaa objektia, joka voidaan iteroida kokoelmassa.

Se käyttää vain yhtä menetelmää “GetEnumerator”, joka palauttaa luetteloluokka-ilmentymän, joka toteuttaa IEnumerator-käyttöliittymän.

Mikä on numeroija?

IEnumerator-käyttöliittymä toisaalta julistaa kaksi menetelmää - Reset () ja MoveNext () - ja yhden ominaisuuden, Current. MoveNext () palauttaa Boolean vale -kohdan, joka osoittaa luettelon lopun ja auttaa sijoittamaan luettelon ensimmäisen elementin Reset () -menetelmän soittamisen jälkeen - se asetti laskurin oletusasentoonsa, jotta luettelo iteroituu uudelleen alku.

Nykyiseen ominaisuuteen voidaan kutsua vain IEnumerator-käyttöliittymän ilmentymän kautta, ja se palauttaa nykyisen elementin luettelossa.

Ero IEnumerable ja IEnumerator välillä

Lukemattoman ja Laskurin perusteet

Sekä IEnumerable että IEnumerator ovat käyttöliittymiä, jotka toteuttavat iteraattoriohjelmistosuunnittelumallin .Net-kehyksessä yhdessä. .Net Framework antaa pääsyn mukautettujen kokoelmien yksittäisiin elementteihin toteuttaessaan IEnumerable- ja IEnumerator-rajapintoja. IEnumerable-käyttöliittymä ilmoittaa vain yhden menetelmän nimeltä GetEnumerator, joka palauttaa toisen tyyppisen liittymän, nimeltään IEnumerator-käyttöliittymän, kyseiselle kokoelmalle. IEnumerator puolestaan ​​on perusrajapinta kaikille muille kuin geneerisille luetteloijoille, joita käytetään lukemaan kokoelman tietoja. Listaimia ei kuitenkaan voida käyttää taustalla olevan kokoelman modifiointiin.

menetelmät

IEnumerable-käyttöliittymä määrittelee vain yhden menetelmän GetEnumerator (), joka on esiintymismenetelmä, jota käytetään useissa eri kokoelmatyypeissä. Se saa IEnumerator-iteraattorin, jota voidaan käyttää kaikkien kokoelman arvojen iterointiin. Kun kirjoitat foreach-silmukan C # -koodiin, sen luoma koodi kutsuu GetEnumerator-menetelmää luomaan silmukan käyttämä Enumerator..

IEnumerator puolestaan ​​käyttää kahta menetelmää MoveNext () ja Reset () ja ominaisuutta Current. MoveNext () -menetelmä vie luetelijan kokoelman seuraavaan elementtiin, kun taas Reset () -menetelmä asettaa luetelijan oletusasentoonsa, joka on ennen kokoelman ensimmäistä elementtiä.

Toteutus

IEnumerable on yleinen käyttöliittymä, joka tarjoaa abstraktin elementtien silmukoimiseen ja toteuttamalla IEnumerable-käyttöliittymän, geneerinen luokka mahdollistaa käytännössä iteroinnin IEnumerator-liitännän kautta. Näin toimiessa nämä luokat tarjoavat lopulta yhteisen käyttöliittymän IEnumerator-objektin esiintymän hakemiseksi, joka tukee kaikkia navigointimenetelmien perusjoukkoa..

IEnumerator on laskurien perusrajapinta ja IEnumerable-käyttöliittymän käyttö edellyttää, että luokan on toteutettava IEnumerator. Molemmat rajapinnat on otettava käyttöön, jos haluat tarjota tukea foreachille. Abstrakti luokka 'AbstractEnumerator' toteuttaa IEnumerator-käyttöliittymän.

Lukemattoman ja Laskurin toiminnallisuus

IEnumerable-käyttöliittymä ja tukeva IEnumerator-käyttöliittymä antavat sinun iteroida pinon elementtejä käyttämällä 'foreach' -käskyä. Se on perusliittymä, jota käytetään kokoelmatyyppisiin objekteihin. Iterointi alkaa pinon ylemmästä elementistä ja päättyy pinon vanhimpaan elementtiin. Yksinkertaisesti sanottuna, se edustaa objektia, joka voidaan luetella.

Yhdessä IEnumerator-käyttöliittymän kanssa ne mahdollistavat ArrayList-elementtien iteroinnin standardisoidulla, peräkkäisellä tavalla, ensimmäisestä elementistä alkaen ja eteenpäin. Foreach-lausunto käyttää IEnumerator-käyttöliittymän menetelmiä ja ominaisuuksia iteraamaan kaikkia kokoelman elementtejä.

IEnumerable vs. IEnumerator: Vertailukaavio

Yhteenveto lukemattomista jakeista IEnumerator

Lyhyesti sanottuna, sekä IEnumerable että IEnumerator ovat käyttöliittymiä, joita käytetään luettelemaan tai toistamaan luokka, jolla on kokoelmaluonne tarkoittaen, että ne helpottavat iteratiivista pääsyä mukautettuun kokoelmaan. IEnumerable on yleinen käyttöliittymä, joka on saatavana kokoelmatyyppisille objekteille, ja toteuttamalla IEnumerable-käyttöliittymän, yleinen luokka mahdollistaa iteroinnin käytännössä IEnumerator-käyttöliittymän kautta. Se käyttää vain yhtä menetelmää GetEnumerator, joka palauttaa luetteloluokka-ilmentymän, joka toteuttaa IEnumerator-käyttöliittymän. IEnumerator-käyttöliittymä on tarkoitettu käytettäväksi lisälaitteina, eikä sitä voida käyttää taustalla olevan kokoelman modifiointiin. Se tarjoaa kaksi abstraktia menetelmää Reset () ja MoveNext () ja ominaisuuden Current kutsuaksesi tiettyyn elementtiin kokoelmassa.