SortedDictionary<TKey,TValue>.IEnumerable.GetEnumerator Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Restituisce un enumeratore che consente di scorrere la raccolta.
virtual System::Collections::IEnumerator ^ System.Collections.IEnumerable.GetEnumerator() = System::Collections::IEnumerable::GetEnumerator;
System.Collections.IEnumerator IEnumerable.GetEnumerator ();
abstract member System.Collections.IEnumerable.GetEnumerator : unit -> System.Collections.IEnumerator
override this.System.Collections.IEnumerable.GetEnumerator : unit -> System.Collections.IEnumerator
Function GetEnumerator () As IEnumerator Implements IEnumerable.GetEnumerator
Restituisce
Oggetto IEnumerator che può essere usato per eseguire l'iterazione della raccolta.
Implementazioni
Commenti
L'istruzione foreach
del linguaggio C# (for each
in C++, For Each
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. In questa posizione, la Current proprietà non è definita. Pertanto, è necessario chiamare il MoveNext metodo per far avanzare l'enumeratore al primo elemento della raccolta prima di leggere il valore di Current.
La Current proprietà restituisce lo stesso elemento finché non viene chiamato il MoveNext metodo . MoveNext imposta Current sull'elemento successivo.
Se MoveNext passa la fine della raccolta, l'enumeratore viene posizionato dopo l'ultimo elemento della raccolta e MoveNext restituisce false
. Quando l'enumeratore si trova in questa posizione, anche le chiamate successive per MoveNext restituire false
. Se l'ultima chiamata a MoveNext restituisce false
, Current non è definita. Non è possibile impostare nuovamente la proprietà Current sul primo elemento della raccolta; è necessario creare una nuova istanza di enumeratore.
Un enumeratore rimane valido finché la raccolta rimane invariata. Se vengono apportate modifiche alla raccolta, ad esempio l'aggiunta, la modifica o l'eliminazione di elementi, l'enumeratore viene invalidato in modo irreversibile e la chiamata successiva a MoveNext o Reset genera un'eccezione InvalidOperationException.
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.
Le implementazioni predefinite di raccolte nello spazio dei nomi System.Collections.Generic non sono sincronizzate.
Questo metodo è un'operazione O(log n) in cui n è un numero di elementi in una raccolta.