Dictionary<TKey,TValue>.KeyCollection.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 scorre l'oggetto Dictionary<TKey,TValue>.KeyCollection.
public:
System::Collections::Generic::Dictionary<TKey, TValue>::KeyCollection::Enumerator GetEnumerator();
public System.Collections.Generic.Dictionary<TKey,TValue>.KeyCollection.Enumerator GetEnumerator();
member this.GetEnumerator : unit -> System.Collections.Generic.Dictionary<'Key, 'Value>.KeyCollection.Enumerator
Public Function GetEnumerator () As Dictionary(Of TKey, TValue).KeyCollection.Enumerator
Valori restituiti
Oggetto Dictionary<TKey,TValue>.KeyCollection.Enumerator per l'oggetto Dictionary<TKey,TValue>.KeyCollection.
Commenti
L'istruzione foreach del linguaggio C# (For Each in Visual Basic) nasconde la complessità degli enumeratori. Pertanto, è consigliabile usare foreach anziché modificare direttamente l'enumeratore.
Gli enumeratori possono essere usati per leggere i dati nella raccolta, ma non possono essere usati per modificare la raccolta sottostante.
Inizialmente, l'enumeratore viene posizionato prima del primo elemento della raccolta. In questa posizione, Current non è definito. È necessario chiamare per far avanzare MoveNext l'enumeratore al primo elemento della raccolta prima di leggere il valore di Current.
Current restituisce lo stesso oggetto finché non MoveNext viene chiamato . 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, le chiamate successive per MoveNext restituire falseanche . Se l'ultima chiamata a MoveNext restituisce false, Current non è definita. Non è possibile impostare Current nuovamente sul primo elemento della raccolta. È invece necessario creare una nuova istanza dell'enumeratore.
Un enumeratore rimane valido finché la raccolta rimane invariata. Se vengono apportate modifiche alla raccolta, ad esempio l'aggiunta di elementi o la modifica della capacità, l'enumeratore viene invalidato in modo irreversibile e la chiamata successiva a MoveNext o IEnumerator.Reset genera un'eccezione InvalidOperationException.
Solo .NET Core 3.0+: gli unici metodi di modifica che non invalidano gli enumeratori sono Remove e Clear.
L'enumeratore non ha accesso esclusivo alla raccolta; pertanto, l'enumerazione tramite una raccolta non è intrinsecamente una procedura thread-safe. Per garantire la thread safety durante l'enumerazione, è possibile bloccare la raccolta durante l'intera enumerazione. Per consentire l'accesso alla raccolta da parte di più thread per la lettura e la scrittura, è necessario implementare la propria sincronizzazione.
Le implementazioni predefinite delle raccolte in System.Collections.Generic non vengono sincronizzate.
Questo metodo è un'operazione O(1).