Dictionary<TKey,TValue>.Enumerator Structure

Définition

Énumère les éléments d’un Dictionary<TKey,TValue>.

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

Paramètres de type

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

Remarques

L’instruction foreach du langage C# (For Each en Visual Basic) masque la complexité des énumérateurs. Par conséquent, l’utilisation foreach est recommandée au lieu de manipuler directement l’énumérateur.

Les énumérateurs peuvent être utilisés pour lire les données de la collection, mais ils ne peuvent pas être utilisés pour modifier la collection sous-jacente.

Initialement, l’énumérateur est positionné avant le premier élément de la collection. À cette position, Current n’est pas défini. Vous devez appeler MoveNext pour faire avancer l’énumérateur vers le premier élément de la collection avant de lire la valeur de Current.

Current retourne le même objet jusqu’à ce qu’il MoveNext soit appelé. MoveNext définit Current l’élément suivant.

Si MoveNext elle passe la fin de la collection, l’énumérateur est positionné après le dernier élément de la collection et MoveNext retourne false. Lorsque l’énumérateur se trouve à cette position, les appels suivants retournent MoveNext également false. Si le dernier appel à MoveNext renvoyer false, Current n’est pas défini. Vous ne pouvez pas définir Current à nouveau le premier élément de la collection . Vous devez créer une instance d’énumérateur à la place.

Un énumérateur reste valide tant que la collection reste inchangée. 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écupérablement invalidé et l’appel suivant à MoveNext ou IEnumerator.Reset lève un InvalidOperationException.

.NET Core 3.0+ uniquement : les seules méthodes mutantes qui n’invalident pas les énumérateurs sont Remove et Clear.

L’énumérateur n’a pas d’accès exclusif à la collection ; par conséquent, l’énumération par le biais d’une collection n’est pas intrinsèquement une procédure thread-safe. Pour garantir la sécurité des threads pendant l’énumération, vous pouvez verrouiller la collection pendant toute l’énumération. Pour permettre à la collection d’accéder à plusieurs threads pour la lecture et l’écriture, vous devez implémenter votre propre synchronisation.

Les implémentations par défaut des regroupements ne System.Collections.Generic sont pas synchronisées.

Propriétés

Nom Description
Current

Obtient l’élément à la position actuelle de l’énumérateur.

Méthodes

Nom Description
Dispose()

Libère toutes les ressources utilisées par le Dictionary<TKey,TValue>.Enumerator.

MoveNext()

Avance l’énumérateur vers l’élément suivant du Dictionary<TKey,TValue>.

Implémentations d’interfaces explicites

Nom Description
IDictionaryEnumerator.Entry

Obtient l’élément à la position actuelle de l’énumérateur.

IDictionaryEnumerator.Key

Obtient la clé de l’élément à la position actuelle de l’énumérateur.

IDictionaryEnumerator.Value

Obtient la valeur de l’élément à la position actuelle de l’énumérateur.

IEnumerator.Current

Obtient l’élément à la position actuelle de l’énumérateur.

IEnumerator.Reset()

Définit l’énumérateur à sa position initiale, qui est avant le premier élément de la collection.

S’applique à

Voir aussi