IEnumerable ja IEnumerator ovat molemmat rajapintoja, jotka ovat saatavilla C#:ssa. Edellinen on moduuli, kun taas jälkimmäinen on objekti.
IEnumerable tuottaa IEnumeratorin. Tässä GetEnumeratorilla saadaan IEnumerator. Foreach-silmukkaa käytetään Enumeratoria käyttävän koodin luomiseen. Enumerator eroaa IEnumeratorista, koska IEnumerator on käyttöliittymä. Enumerator toteuttaa sen.
IEnumerable vs IEnumerator
Ero IEnumerablen ja IEnumeratorin välillä on se, että IEnumerable toimii yleisessä käyttöliittymässä ja IEnumerator toimii kaikissa ei-yleisissä liitännöissä. IEnumerable osoittaa objektiin, joka voidaan luetella, mutta IEnumerator on toteutettu käyttämällä jokaista iterointilausetta. IEnumerable-rajapinta käyttää IEnumeratoria kaikkien elementtiensä iterointiin käyttämällä jokaista lauseketta.
IEnumerablea käytetään rajapintana käytettävän objektin etsimiseen. Sitä käytetään kaikkien kokoelman elementtien iterointiin. Iterointiprosessi helpottaa kokoelman läpikulkua. Se toimii esineenä. GetEnumerator on menetelmä, jota käytetään IEnumerator-rajapinnan toteuttamiseen.
IEnumeratorilla on kaksi menetelmää, Reset() ja MoveNext(), ja sillä on laajennettu ominaisuus, joka tunnetaan nimellä Current. MoveNext() on menetelmä, joka tuottaa Boolen arvon, joka osoittaa luettelon loppuelementin. Nollausmenetelmä tekee luetteloinnista oletusasetuksen.
Vertailutaulukko IEnumerablen ja IEnumeratorin välillä
Vertailuparametrit | IEnumerable | IEnumerator |
Käyttöliittymän tyyppi | Yleinen | Ei-yleinen |
Menetelmien lukumäärä | Yksi | Kaksi |
Palauttaa | IEnumerator | Ei mitään |
Kohdistimen tila | Ei voi säilyttää | Voi säilyttää |
Tuote | Luettelo objekti | Jokaisen lausunnon tuloksen osalta |
Kirjoittamisen tapa | Abstrakti | Betoni |
Mikä on IEnumerable?
Tämä on rajapinta, jonka toteuttaa numeroitu luokka. Koko kokoelma c#:ssa voi toteuttaa IEnumerable-liittymän. Se palauttaa IEnumeratorin. Se ei muutu koodissa käytettyjen käyttöoikeusmääritteiden mukaisesti. IEnumerablella on menetelmä, joka tunnetaan nimellä GetEnumerator. Tämä toteutus tehdään vain luokan sisällä.
Iterointiprosessi helpottaa kokoelman läpikulkua. Se toimii esineenä. GetEnumerator on menetelmä, jota käytetään IEnumerator-rajapinnan toteuttamiseen. IEnumerable tunnetaan usein yleisenä käyttöliittymänä, koska koodi kirjoitetaan hyvin pienemmäksi, koska se tarvitsee vain kertaluonteisen toteutuksen. Ei ole väliä kuinka monta konstruktoria kooditoteutuksessa käytetään kaikkien elementtien iterointiin.
Koodin ylläpito on vähäistä, koska koodin muutos on yhden alustan alla eikä vaadi ylimääräisiä muutoksia. Se käyttää abstraktiota kaikkien taulukon elementtien iterointiin. Se käyttää IEnumerator-iteraattoria, jota käytetään kaikkien elementtien iterointiin. Koska se on yleinen luokka, se suorittaa helposti taulukon elementtien iteroinnin. Se tarjoaa yhteisen käyttöliittymän. Sitä käytetään kaikissa ei-yleisluokissa.
Mikä on IEnumerator?
Siinä on kaksi tapaa toteuttaa kokoelman kaikkien elementtien iterointi. Siinä on kaksi tapaa, jotka ovat MoveNext ja Reset. MoveNext on menetelmä, joka osoittaa, että iteraatio ei ole saavuttanut kokoelman viimeistä elementtiä.
Nollausmenetelmä tekee saman asian miltä se kuulostaa. Se kehottaa aloittamaan iteroinnin uudelleen sen jälkeen, kun edellinen iteraatio on suoritettu taulukon viimeiseen elementtiin. Lopuksi yksi objekti on Current, joka antaa nykyisen elementin iteroinnin tuloksena. Sillä on tietty pääsy elementteihinsä. Se tarjoaa vain luku -oikeuden koko matriisiinsa.
IEnumerator kutsuu nykyistä ominaisuutta, jonka vastuulla on palauttaa luettelossa tällä hetkellä käytössä oleva elementti. Se käyttää kahta menetelmää ja ominaisuutta objektin iterointiin. Jokainen lauseke käyttää taulukkoluetteloa ja aloittaa iteroinnin siirtymällä eteenpäin ja käyttää yhtä menetelmistä. IEnumerator ei voi palauttaa IEnumerablea.
Se voi helposti palauttaa kursorin nykyisen tilan. IEnumerator käyttää konkreettista kirjoitustapaa. Se aloittaa iteroinnin pinossa iteroimalla pinon ensimmäisen elementin ja päättyen pinon viimeiseen elementtiin.
Tärkeimmät erot IEnumerablen ja IEnumeratorin välillä
Johtopäätökset
IEnumerable on rajapinta, jonka enumerable-luokka toteuttaa. Se käyttää abstraktiota kaikkien taulukon elementtien iterointiin. Se käyttää IEnumerator-iteraattoria, jota käytetään kaikkien elementtien iterointiin. IEnumerator kutsuu nykyistä ominaisuutta, jonka vastuulla on palauttaa luettelossa tällä hetkellä käytössä oleva elementti.
Se käyttää kahta menetelmää ja ominaisuutta objektin iterointiin. IEnumerable tunnetaan usein yleisenä käyttöliittymänä, koska koodi on kirjoitettu hyvin pienemmäksi. IEnumerator käyttää konkreettista kirjoitustapaa. GetEnumerator on menetelmä, jota käytetään IEnumerator-rajapinnan toteuttamiseen.
Iterointiprosessi helpottaa IEnumerable-kokoelman läpikulkua. Se toimii esineenä. MoveNext on menetelmä, joka tuottaa Boolen arvon, joka osoittaa luettelon loppuelementin. IEnumerable palauttaa IEnumerator-liittymän, kun se käy läpi iterointiprosessin.
Molempia käytetään iterointiprosessissa, joka noudattaa erilaisia iterointitapoja. Se käyttää iteraattoria iteroidakseen kaikki pinon taulukon elementit. Se eroaa toisistaan siten, että toinen käyttää abstraktiota ja toinen konkreettisia koodeja. Sillä on erilaisia menetelmiä ja ominaisuuksia palauttaa kursorin tila ja ylläpitää pinon iteraatiota.