Dictionary<TKey,TValue>.Enumerator Struktura

Definice

Vyčíslí prvky objektu 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
[<System.Serializable>]
type Dictionary<'Key, 'Value>.Enumerator = struct
    interface IEnumerator<KeyValuePair<'Key, 'Value>>
    interface IDictionaryEnumerator
    interface IDisposable
    interface IEnumerator
Public Structure Dictionary(Of TKey, TValue).Enumerator
Implements IDictionaryEnumerator, IEnumerator(Of KeyValuePair(Of TKey, TValue))

Parametry typu

TKey
TValue
Dědičnost
Dictionary<TKey,TValue>.Enumerator
Atributy
Implementuje

Poznámky

Příkaz foreach jazyka C# (for each v jazyce C++, For Each v jazyce Visual Basic) skrývá složitost enumerátorů. Proto se doporučuje používat foreach místo přímé manipulace s enumerátorem.

Enumerátory lze používat ke čtení dat v kolekci, nikoli však k úpravě zdrojové kolekce.

Zpočátku je enumerátor umístěn před prvním prvkem v kolekci. Na této pozici Current není definován. Před čtením hodnoty Currentje nutné volatMoveNext, aby se enumerátor přepojí na první prvek kolekce.

Current vrátí stejný objekt, dokud MoveNext není volána. MoveNext nastaví Current na další prvek.

Pokud MoveNext přejde na konec kolekce, enumerátor se umístí za poslední prvek v kolekci a MoveNext vrátí false. Pokud je enumerátor na této pozici, další volání MoveNext vrátí falsetaké . Pokud je poslední volání MoveNext vráceno false, Current není definováno. Nelze znovu nastavit Current na první prvek kolekce; místo toho musíte vytvořit novou instanci enumerátoru.

Enumerátor zůstane platný, dokud kolekce zůstane beze změny. Pokud jsou v kolekci provedeny změny, například přidání prvků nebo změna kapacity, enumerátor se nenávratně zneplatní a další volání MoveNext nebo IEnumerator.Reset vyvolá InvalidOperationException.

Pouze .NET Core 3.0+: Jediné metody mutování, které neaktivují výčet, jsou Remove a Clear.

Enumerátor nemá výhradní přístup ke kolekci. proto výčet prostřednictvím kolekce není vnitřně procedurou bezpečnou pro přístup z více vláken. Abyste zajistili bezpečnost vláken během výčtu, můžete kolekci zamknout během celého výčtu. Chcete-li více vláknům umožnit přístup ke kolekci pro čtení a zápis, musíte implementovat svou vlastní synchronizaci.

Výchozí implementace kolekcí v systému System.Collections.Generic se nesynchronují.

Vlastnosti

Current

Získá prvek na aktuální pozici enumerátoru.

Metody

Dispose()

Uvolní všechny prostředky používané nástrojem Dictionary<TKey,TValue>.Enumerator.

MoveNext()

Posune enumerátor na další prvek objektu Dictionary<TKey,TValue>.

Explicitní implementace rozhraní

IDictionaryEnumerator.Entry

Získá prvek na aktuální pozici enumerátoru.

IDictionaryEnumerator.Key

Získá klíč prvku na aktuální pozici enumerátoru.

IDictionaryEnumerator.Value

Získá hodnotu prvku na aktuální pozici enumerátoru.

IEnumerator.Current

Získá prvek na aktuální pozici enumerátoru.

IEnumerator.Reset()

Nastaví enumerátor na počáteční pozici, která je před prvním prvkem v kolekci.

Platí pro

Viz také