Dictionary<TKey,TValue>.Enumerator Structure
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Énumère les éléments d'un élément 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
- Attributs
- Implémente
Remarques
L’instruction foreach
du langage C# (for each
en C++, For Each
en Visual Basic) masque la complexité des énumérateurs. Il est donc recommandé d'utiliser foreach
plutôt que de manipuler l'énumérateur directement.
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.
Au départ, 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 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 que MoveNext soit appelé. MoveNext affecte l'élément suivant à Current.
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
. Lorsque l’énumérateur se trouve à cette position, les appels suivants retournent MoveNextfalse
également . Si le dernier appel à MoveNext retourné false
, Current n’est pas défini. 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.
Un énumérateur reste valide aussi longtemps que la collection demeure 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 de mutation qui n’invalident pas les énumérateurs sont Remove et 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. Pour garantir la sécurité des threads pendant l'énumération, vous pouvez verrouiller la collection tout au long de cette opération. Pour permettre à plusieurs threads d’accéder en lecture et en écriture à la collection, vous devez implémenter votre propre synchronisation.
Les implémentations par défaut des regroupements dans System.Collections.Generic ne sont pas synchronisées.
Propriétés
Current |
Obtient l'élément situé à la position actuelle de l'énumérateur. |
Méthodes
Dispose() |
Libère toutes les ressources utilisées par Dictionary<TKey,TValue>.Enumerator. |
MoveNext() |
Avance l'énumérateur à l'élément suivant du Dictionary<TKey,TValue>. |
Implémentations d’interfaces explicites
IDictionaryEnumerator.Entry |
Obtient l'élément situé à 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 situé à la position actuelle de l'énumérateur. |
IEnumerator.Reset() |
Rétablit l’énumérateur à sa position initiale, qui précède le premier élément de la collection. |