IEnumerable vs IEnumerator: differenza e confronto

IEnumerable e IEnumerator sono entrambe interfacce disponibili in C#. Il primo è un modulo, mentre il secondo è un oggetto. 

IEnumerable produce IEnumerator. Qui GetEnumerator viene utilizzato per ottenere IEnumerator, poiché ogni ciclo viene utilizzato per generare codice che utilizza Enumerator. Un enumeratore è diverso da IEnumerator in quanto IEnumerator è un'interfaccia. L'enumeratore lo implementa.

Punti chiave

  1. IEnumerable è un'interfaccia che consente l'iterazione su una raccolta di oggetti, mentre IEnumerator è una classe che implementa l'interfaccia IEnumerator e fornisce metodi per attraversare una raccolta.
  2. IEnumerable fornisce un singolo metodo (GetEnumerator) che restituisce un oggetto IEnumerator, mentre IEnumerator fornisce metodi per spostarsi all'interno della raccolta (MoveNext) e recuperare l'oggetto corrente (Current).
  3. IEnumerable viene utilizzato per creare raccolte che possono essere ripetute, mentre IEnumerator viene utilizzato per attraversare tali raccolte.

IEnumerable vs IEnumerator

La differenza tra IEnumerable e IEnumerator è che IEnumerable funziona per l'interfaccia generica e IEnumerator funziona per tutte le interfacce non generiche. IEnumerable punta a un oggetto che può essere enumerato, ma IEnumerator viene implementato utilizzando ogni istruzione per l'iterazione. L'interfaccia IEnumerable utilizza IEnumerator per l'iterazione di tutti gli elementi utilizzati per ciascuna istruzione.

IEnumerable vs IEnumerator

IEnumerable viene utilizzato per trovare un oggetto utilizzato come interfaccia. Viene utilizzato per l'iterazione di tutti gli elementi nella raccolta.

Il processo di iterazione semplifica l'attraversamento della raccolta. Agisce come un oggetto. GetEnumerator è un metodo utilizzato per l'implementazione dell'interfaccia IEnumerator.

IEnumerator ha due metodi, Reset() e MoveNext(), e ha una proprietà estesa nota come Current. MoveNext() è un metodo che produce un valore booleano che indica l'elemento finale della lista. Il metodo reset rende l'enumeratore la sua posizione predefinita.

Tavola di comparazione

Parametri di confrontoIEnumerabileIEnumeratore
Tipo di interfacciaGenericoNon generico
Numero di metodiUnoDue
ResoIEnumeratoreNona
Stato del cursoreImpossibile conservarePuò trattenere
ProdottoOggetto enumeratoPer ogni risultato dell'istruzione
Modo di scrivereAstrattoCalcestruzzo

Cos'è IEnumerable?

Questa è un'interfaccia implementata da una classe enumerabile. L'intera collezione in c# può implementare un'interfaccia IEnumerable. Restituisce IEnumerator. Non cambia in base agli specificatori di accesso utilizzati nel codice.

IEnumerable ha un metodo noto come GetEnumerator. Questa implementazione viene eseguita solo all'interno della classe.

Il processo di iterazione semplifica l'attraversamento della raccolta. Agisce come un oggetto. GetEnumerator è un metodo utilizzato per l'implementazione dell'interfaccia IEnumerator.

IEnumerable è nota come interfaccia generica poiché il codice è scritto in dimensioni molto ridotte poiché necessita di un'unica implementazione. Non importa quanti costruttori vengono utilizzati nell'implementazione del codice per l'iterazione di tutti gli elementi.

Il codice richiede poca manutenzione poiché la modifica al codice avviene su un'unica piattaforma e non richiede modifiche aggiuntive. Utilizza l'astrazione per l'iterazione di tutti gli elementi nell'array.

Utilizza un iteratore IEnumerator che viene utilizzato per l'iterazione di tutti gli elementi. Poiché è una classe generica, esegue facilmente l'iterazione degli elementi nell'array. Fornisce un'interfaccia comune. Viene utilizzato in tutte le classi non generiche.

Cos'è IEnumerator?

Ha due metodi per implementare l'iterazione di tutti gli elementi nella raccolta. Ha due metodi che sono MoveNext e Reset. MoveNext è un metodo che indica che l'iterazione non ha raggiunto l'ultimo elemento della raccolta.

 Il metodo di ripristino fa la stessa cosa che sembra. Indica di ricominciare l'iterazione dopo che l'iterazione precedente è stata eseguita fino all'ultimo elemento dell'array.

Infine, l'unico oggetto è Current, che fornisce l'elemento corrente come risultato dell'iterazione. Ha un accesso specifico ai suoi elementi. Fornisce solo l'accesso in sola lettura a tutti i suoi array.

IEnumerator chiama la proprietà current, che è responsabile della restituzione dell'elemento nell'elenco attualmente utilizzato. Utilizza due metodi e la proprietà per l'iterazione dell'oggetto.

Ogni istruzione utilizza l'elenco di array, avvia l'iterazione andando avanti e utilizza uno dei metodi. IEnumerator non può restituire IEnumerable.

Può facilmente ripristinare lo stato corrente del cursore. IEnumerator utilizza un modo di scrivere concreto. Inizia l'iterazione nello stack iterando il primo elemento dello stack e terminando con l'ultimo elemento dello stack.

Principali differenze tra IEnumerable e IEnumerator

  1. IEnumerable viene utilizzato per l'interfaccia generica, ma IEnumerator viene utilizzato per l'interfaccia non generica.
  2. IEnumerable ha un solo metodo, mentre IEnumerator ha solo due metodi.
  3. IEnumerable può restituire IEnumerator, ma IEnumerator non può restituire IEnumerable.
  4. IEnumerable non può mantenere lo stato corrente del cursore, ma IEnumerator può conservarlo.
  5. IEnumerable mostra un oggetto enumerato, mentre IEnumerator ne ha uno per ogni istruzione.
  6. IEnumerable è un modo astratto di scrivere, ma IEnumerator usa la scrittura concreta.
Bibliografia
  1. https://ieeexplore.ieee.org/abstract/document/7883396/

Una richiesta?

Ho messo così tanto impegno scrivendo questo post sul blog per fornirti valore. Sarà molto utile per me, se pensi di condividerlo sui social media o con i tuoi amici/familiari. LA CONDIVISIONE È ♥️

Vuoi salvare questo articolo per dopo? Fai clic sul cuore nell'angolo in basso a destra per salvare nella casella dei tuoi articoli!

Chi Autore

Chara Yadav ha conseguito un MBA in Finanza. Il suo obiettivo è semplificare gli argomenti relativi alla finanza. Ha lavorato nella finanza per circa 25 anni. Ha tenuto numerosi corsi di finanza e banche per business school e comunità. Leggi di più su di lei pagina bio.