Sommario:
Definizione - Cosa significa Iteratore?
Un iteratore, nel contesto di C #, è un blocco di codice che restituisce una sequenza ordinata di valori di una raccolta o di un array. È una funzione membro implementata utilizzando il blocco iteratore, che contiene una o più istruzioni contenenti la parola chiave "yield".
Un iteratore viene utilizzato per consentire ai consumatori di una classe contenitore, contenente una raccolta o un array, di attraversare la raccolta utilizzando l'istruzione "foreach" in modo più semplice. Viene utilizzato con classi di raccolta fortemente tipizzate per iterare strutture dati complesse come alberi binari, che richiedono un attraversamento ricorsivo e mantengono lo stato di iterazione attraverso la ricorsione. Il concetto di iteratore viene anche utilizzato nell'implementazione dell'esecuzione differita nelle query LINQ.
Techopedia spiega Iterator
L'iteratore si basa su un modello di progettazione che fornisce un metodo per attraversare gli elementi di una raccolta di elementi in sequenza senza esporre la struttura sottostante della raccolta. Elimina il noioso compito di implementare manualmente l'interfaccia "IEnumerator" durante la creazione di classi di raccolta che supportano l'istruzione "foreach". Il codice del linguaggio intermedio necessario per implementare i metodi e le proprietà dell'interfaccia IEnumerator è generato dal compilatore, il che si traduce in una sintassi più semplice, dimensioni del codice ridotte e miglioramento della produttività degli sviluppatori.
In generale, un iteratore è simile a un cursore del database in quanto fornisce l'accesso agli elementi di dati in una raccolta, ma non esegue l'iterazione. Un iteratore può essere implementato in C # come metodo, operatore o get accessor. Ad esempio, un iteratore può essere utilizzato per attraversare una raccolta di stringhe per visualizzare il contenuto di ciascuna stringa nella raccolta.
Un iteratore è rappresentato dall'interfaccia IEnumerator ed è implementato dal compilatore con i seguenti metodi:
- MoveNext: un metodo che avanza all'elemento successivo della raccolta e indica la fine di quella raccolta
- Corrente: una proprietà che recupera il valore dell'elemento attualmente indicato
- Dispose: pulisce l'iterazione
