Dictionary<TKey,TValue>.KeyCollection.Enumerator Structure

Définition

Énumère les éléments d'un élément Dictionary<TKey,TValue>.KeyCollection.Enumerates the elements of a Dictionary<TKey,TValue>.KeyCollection.

public: value class Dictionary<TKey, TValue>::KeyCollection::Enumerator : System::Collections::Generic::IEnumerator<TKey>
[System.Serializable]
public struct Dictionary<TKey,TValue>.KeyCollection.Enumerator : System.Collections.Generic.IEnumerator<TKey>
type Dictionary<'Key, 'Value>.KeyCollection.Enumerator = struct
    interface IEnumerator<'Key>
    interface IEnumerator
    interface IDisposable
Public Structure Dictionary(Of TKey, TValue).KeyCollection.Enumerator
Implements IEnumerator(Of TKey)

Paramètres de type

TKey
TValue
Héritage
Dictionary<TKey,TValue>.KeyCollection.Enumerator
Attributs
Implémente

Remarques

La foreach instruction du C# langage (for each dans C++, For Each dans Visual Basic) masque la complexité des énumérateurs.The foreach statement of the C# language (for each in C++, For Each in Visual Basic) hides the complexity of enumerators. Il est donc recommandé d'utiliser foreach plutôt que de manipuler l'énumérateur directement.Therefore, using foreach is recommended, instead of directly manipulating the enumerator.

Les énumérateurs peuvent être utilisés pour lire les données de la collection, mais ils ne permettent pas de modifier la collection sous-jacente.Enumerators can be used to read the data in the collection, but they cannot be used to modify the underlying collection.

Au départ, l'énumérateur est positionné avant le premier élément de la collection.Initially, the enumerator is positioned before the first element in the collection. À cette position, Current n'est pas défini.At this position, Current is undefined. Vous devez appeler MoveNext pour avancer l’énumérateur jusqu’au premier élément de la collection avant de lire la valeur de Current.You must call MoveNext to advance the enumerator to the first element of the collection before reading the value of Current.

Current retourne le même objet jusqu'à ce que MoveNext soit appelé.Current returns the same object until MoveNext is called. MoveNext définit Current à l’élément suivant.MoveNext sets Current to the next element.

Si MoveNext passe la fin de la collection, l’énumérateur est positionné après le dernier élément de la collection et MoveNext retourne false.If MoveNext passes the end of the collection, the enumerator is positioned after the last element in the collection and MoveNext returns false. Lorsque l’énumérateur se trouve à cette position, les appels suivants à MoveNext retournent également false.When the enumerator is at this position, subsequent calls to MoveNext also return false. Si le dernier appel à MoveNext retourné false, Current n’est pas défini.If the last call to MoveNext returned false, Current is undefined. Vous ne pouvez pas attribuer de nouveau Current au premier élément de la collection ; vous devez créer une nouvelle instance de l’énumérateur à la place.You cannot set Current to the first element of the collection again; you must create a new enumerator instance instead.

Un énumérateur reste valide aussi longtemps que la collection demeure inchangée.An enumerator remains valid as long as the collection remains unchanged. Si des modifications sont apportées à la collection, telles que l’ajout d’éléments ou la modification de la capacité, l’énumérateur est irrévocablement invalidé et l’appel suivant à MoveNext ou IEnumerator.Reset lève une InvalidOperationException.If changes are made to the collection, such as adding elements or changing the capacity, the enumerator is irrecoverably invalidated and the next call to MoveNext or IEnumerator.Reset throws an InvalidOperationException.

.NET Core 3.0 + uniquement : les seules méthodes mutantes qui n’invalident pas les énumérateurs sont Remove et Clear..NET Core 3.0+ only: The only mutating methods which do not invalidate enumerators are Remove and Clear.

Comme l’énumérateur ne dispose pas d’un accès exclusif à la collection, l’énumération d’une collection n’est pas intrinsèquement une procédure thread-safe.The enumerator does not have exclusive access to the collection; therefore, enumerating through a collection is intrinsically not a thread-safe procedure. Pour garantir la sécurité des threads pendant l'énumération, vous pouvez verrouiller la collection tout au long de cette opération.To guarantee thread safety during enumeration, you can lock the collection during the entire enumeration. Pour permettre à plusieurs threads d’accéder en lecture et en écriture à la collection, vous devez implémenter votre propre synchronisation.To allow the collection to be accessed by multiple threads for reading and writing, you must implement your own synchronization.

Les implémentations par défaut de collections dans System.Collections.Generic ne sont pas synchronisées.Default implementations of collections in System.Collections.Generic are not synchronized.

Propriétés

Current

Obtient l'élément situé à la position actuelle de l'énumérateur.Gets the element at the current position of the enumerator.

Méthodes

Dispose()

Libère toutes les ressources utilisées par Dictionary<TKey,TValue>.KeyCollection.Enumerator.Releases all resources used by the Dictionary<TKey,TValue>.KeyCollection.Enumerator.

MoveNext()

Avance l'énumérateur à l'élément suivant du Dictionary<TKey,TValue>.KeyCollection.Advances the enumerator to the next element of the Dictionary<TKey,TValue>.KeyCollection.

Implémentations d’interfaces explicites

IEnumerator.Current

Obtient l'élément situé à la position actuelle de l'énumérateur.Gets the element at the current position of the enumerator.

IEnumerator.Reset()

Rétablit l'énumérateur à sa position initiale, qui précède le premier élément de la collection.Sets the enumerator to its initial position, which is before the first element in the collection.

S’applique à

Voir aussi