Metodo Collection.IEnumerable.GetEnumerator ()

 

Data di pubblicazione: ottobre 2016

Restituisce un enumeratore che consente di scorrere la raccolta. Implementa l'interfaccia ICollection.

Spazio dei nomi:   Microsoft.VisualBasic
Assembly:  Microsoft.VisualBasic (in Microsoft.VisualBasic.dll)

IEnumerator IEnumerable.GetEnumerator()

Valore restituito

Type: System.Collections.IEnumerator

Oggetto IEnumerator che può essere usato per eseguire l'iterazione della raccolta.

[Visual Basic, c#]

L'istruzione foreach del linguaggio C# (for each in Visual Basic) nasconde la complessità degli enumeratori. Pertanto, si consiglia l'utilizzo di foreach, anziché la modifica diretta dell'enumeratore.

È possibile utilizzare enumeratori per leggere i dati nella raccolta, ma non per modificare la raccolta sottostante.

Inizialmente l'enumeratore è posizionato davanti al primo elemento della raccolta. Il Reset metodo riporta l'enumeratore in questa posizione. In questa posizione, la Current proprietà non è definita. Pertanto, è necessario chiamare il MoveNext metodo per spostare l'enumeratore al primo elemento della raccolta prima di leggere il valore di Current.

Current restituisce lo stesso oggetto finché non viene chiamato il metodo MoveNext o Reset.MoveNext imposta Current sull'elemento successivo.

Se MoveNext raggiunge la fine della raccolta, l'enumeratore è posizionato dopo l'ultimo elemento nella raccolta e MoveNext restituisce false. Quando l'enumeratore si trova in questa posizione, le chiamate successive a MoveNext restituiscono false. Se l'ultima chiamata a MoveNext restituisce false, Current è definito. Per impostare nuovamente la proprietà Current sul primo elemento della raccolta, è possibile chiamare il metodo Reset seguito da MoveNext.

Un enumeratore rimane valido fino a quando la raccolta non subisce modifiche. In caso di modifiche alla raccolta, ad esempio aggiunta, modifica o eliminazione di elementi, l'enumeratore sarà reso non valido in modo irreversibile e il comportamento corrispondente non sarà definito.

L'enumeratore non dispone di accesso esclusivo alla raccolta. L'enumerazione di una raccolta non è quindi una procedura thread-safe. Per assicurare la protezione del thread durante l'enumerazione, è possibile bloccare la raccolta durante l'intera enumerazione. Per consentire l'accesso alla raccolta in lettura e scrittura da parte di più thread, è necessario implementare la propria sincronizzazione.

Torna all'inizio
Mostra: