IEnumerable ja IEnumerator

Anonim

Ennen kuin hyppäämme ero IEnumerable ja IEnumerator, yritämme ensin ymmärtää termit Enumerator ja Enumerable ja milloin ja miksi käyttää niitä.

Numeerinen on moduuli, jota käytetään Array-luokassa, joka antaa sinulle Enumeratorin. Luokka ei itse kukin menetelmä. Itse asiassa se käyttää menetelmää nimeltä "GetEnumerator", joka antaa sinulle Enumerator hakea kohteensa.

Enumerator on kohde, joka palauttaa jokaisen kohteen kokoelmassa tietyssä järjestyksessä täsmälleen sellaisina kuin heitä pyydetään. Kääntäjä luo koodin, joka käyttää Enumeratoria, kun kirjoitat foreach-silmukan C #: ssa.

IEnumerator on rajapinta, jonka toteuttaja on rekisterinpitäjä ja lukuinen luokka toteuttaa IEnumerable -rajapinnan.

Mikä on lukematon?

IEnumerable on perusliitäntä, jota käytetään kohteen hankkimiseen, joka osaa (tai iteroittaa) kokoelman elementtien yli.

Se on iteraattorikuvan toteutus, joka tarjoaa mekanismin siirtää esine kokoelmasta riippumatta sen sisäisestä rakenteesta. IEnumerable käyttöliittymä edustaa kohdetta, joka voidaan toistaa kokoelmassa.

Se käyttää vain yhtä "GetEnumerator" -menetelmää, joka palauttaa IEumerijan käyttöliittymän toteuttavan enumerointiluokan esimerkin.

Mikä on Ienumerator?

IEnumerator-rajapinta, toisaalta, julistaa kaksi tapaa - Reset () ja MoveNext () - sekä yksi ominaisuus, Nykyinen. MoveNext () palauttaa Boolen-arvon, joka ilmoittaa luettelon lopun ja auttaa sijoittamaan luettelon ensimmäisen elementin sen jälkeen, kun se on soitettu Reset () -menetelmällä. Se asettaa luettelonumeron oletusasemaan siten, että luettelon uudelleenlistaus alku.

Nykyinen ominaisuus voidaan kutsua vain IEnumerator-rajapinnan esimerkin kautta ja palauttaa luettelon nykyisen elementin.

IEnumerable ja IEnumeratorin ero

IEnumerable ja Ienumeratorin perusteet

Sekä IEnumerable että IEnumerator ovat rajapintoja, jotka toteuttavat iteraattorin ohjelmistosuunnittelukuvion yhdessä.Net Frameworkin kanssa..Net Framework tekee yksittäisten elementtien käyttämisen mukautetussa kokoelmassa toteutettaessa IEnumerable- ja IEnumerator-rajapintoja. IEnumerable käyttöliittymä ilmoittaa vain yhden metodin nimeltä GetEnumerator, joka palauttaa toisen tietoliikennetyypin, jota kutsutaan IEnumerator-rajapinnaksi kyseiselle kokoelmalle. IEnumerator on sen sijaan perusliitäntä kaikille ei-geneerisille luetteloijille, joita käytetään kokoelman tietojen lukemiseen. Enumeroita ei kuitenkaan voida käyttää muokkaamaan taustalla olevaa kokoelmaa.

menetelmät

IEnumerable käyttöliittymä määrittelee vain yhden menetelmän GetEnumerator (), joka on useampaan keräystyyppeihin käytettävä instanssimenetelmä. Se saa IEnumerator-iteratorin, jota voidaan käyttää kokoelman kaikkien arvojen yli. Kun kirjoitat foreach-silmukan C # -koodissa, se synnyttää kutsut GetEnumerator-menetelmän, jolla luodaan silmukan käyttämä Enumerator.

IEnumerator käyttää toisaalta kahta menetelmää MoveNext () ja Reset () ja omaisuuden Nykyinen. MoveNext () -menetelmä vie luettelonumeron seuraaviin elementteihin, kun taas Reset () -menetelmä asettaa rekisterinumeron oletusasemaan, joka on ennen kokoelman ensimmäistä elementtiä.

täytäntöönpano

IEnumerable on yleinen rajapinta, joka tarjoaa abstraktiota yli elementtien silmukoittamiseksi ja toteuttamalla IEnumerable -rajapinnan, yleinen luokka mahdollistaa olennaisesti iteraation IEnumerator-rajapinnan kautta. Tällöin nämä luokat päätyvät tarjoamaan yhteinen käyttöliittymä hakemaan IEnumeratorin ilmentymä objekti, joka tukee kaikkia navigointimenetelmiä.

IEnumerator on alusliittymä enumeroijille ja IEnumerable käyttöliittymän käyttö edellyttää, että luokan on toteutettava IEnumerator. Molemmat liitännät on toteutettava, jos haluat tukea foreachia. Abstrakti luokka "AbstractEnumerator" toteuttaa IEnumerator-rajapinnan.

IEnumerable ja IEnumerator toiminnallisuus

IEnumerable käyttöliittymä, yhdessä IEnumeratorin käyttöliittymän kanssa, mahdollistaa iteroitumisen pinossa olevien elementtien avulla käyttämällä "foreach" -lausetta. Se on perusliitäntä, jota käytetään keräilytyyppisten esineiden tapauksessa.Iteraatio alkaa pinon yläosasta ja päättyy pinoon vanhin elementti. Yksinkertaisesti sanottuna se edustaa kohdetta, joka voidaan luetella.

Yhdessä IEnumerator-rajapinnan kanssa ne mahdollistavat ArrayList-elementtien toiston standardoidulla, peräkkäisellä tavalla alkaen ensimmäisestä elementistä ja eteenpäin. Foreach-lausekkeessa käytetään IEnumerator-rajapinnan menetelmiä ja ominaisuuksia iteroimaan kaikki elementit kokoelmassa.

IEnumerable vs. IEnumerator: vertailukuvio

Yhteenveto IEnumeroitavista jakeista IEnumerator

Pähkinänkuoressa sekä IEnumerable että IEnumerator ovat rajapintoja, joita käytetään luokittelemaan tai iteroimaan luokka, jolla on keräysluonne, joten ne helpottavat iteratiivista käyttöä mukautetussa kokoelmassa. IEnumerable on yleinen käyttöliittymä, joka on käytettävissä keräilytapaobjekteille ja toteuttamalla IEnumerable -rajapinta, yleinen luokka mahdollistaa olennaisesti iteraation IEnumerator-rajapinnan kautta. Se käyttää vain yhtä menetelmää GetEnumerator, joka palauttaa IEumerijan käyttöliittymän toteuttavan enumerointiluokan esimerkin. IEnumerator-liitäntä on tarkoitettu käytettäväksi lisävarusteina, eikä sitä voi käyttää mallin muokkaamiseen. Se tarjoaa kaksi abstrakti menetelmää Reset () ja MoveNext (), sekä ominaisuus Nykyinen, jos haluat kutsua tietyn elementin kokoelmasta.