Dictionary<TKey,TValue>.IEnumerable.GetEnumerator Metoda

Definice

Vrátí enumerátor, který prochází kolekcí.

 virtual System::Collections::IEnumerator ^ System.Collections.IEnumerable.GetEnumerator() = System::Collections::IEnumerable::GetEnumerator;
System.Collections.IEnumerator IEnumerable.GetEnumerator();
abstract member System.Collections.IEnumerable.GetEnumerator : unit -> System.Collections.IEnumerator
override this.System.Collections.IEnumerable.GetEnumerator : unit -> System.Collections.IEnumerator
Function GetEnumerator () As IEnumerator Implements IEnumerable.GetEnumerator

Návraty

Ten IEnumerator se dá použít k iteraci v kolekci.

Implementuje

Poznámky

Příkaz foreach jazyka C# (For Each v jazyce Visual Basic) skryje složitost výčtů. Proto se místo přímé manipulace s enumerátorem doporučuje použití foreach .

Enumerátory lze použít ke čtení dat v kolekci, ale nelze je použít k úpravě podkladové kolekce.

Na začátku je enumerátor umístěn před prvním prvkem v kolekci. Metoda Reset také vrátí enumerátor zpět na tuto pozici. V této pozici Current není vlastnost definována. Proto je nutné volat metodu MoveNext pro přechod enumerátoru na první prvek kolekce před čtením hodnoty Current.

Vlastnost Current vrátí stejný prvek, dokud MoveNext není volána metoda nebo metoda Reset . MoveNext nastaví Current na další prvek.

Pokud MoveNext předá konec kolekce, enumerátor je umístěn za posledním prvkem v kolekci a MoveNext vrátí .false Pokud je enumerátor na této pozici, následná volání vrátit MoveNext také false. Pokud se vrátí poslední volání MoveNextfalse, Current není definováno. Chcete-li nastavit Current na první prvek kolekce znovu, můžete volat Reset následovaný MoveNext.

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 je nenávratně neplatný a další volání MoveNext nebo IEnumerator.Reset vyvolá výjimku InvalidOperationException.

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

Enumerátor nemá výhradní přístup k kolekci; proto výčet prostřednictvím kolekce není vnitřně bezpečný postup vlákna. Chcete-li zaručit bezpečnost vláken během výčtu, můžete kolekci uzamknout během celého výčtu. Pokud chcete povolit přístup ke kolekci více vlákny pro čtení a zápis, musíte implementovat vlastní synchronizaci.

Výchozí implementace kolekcí v System.Collections.Generic oboru názvů nejsou synchronizovány.

Tato metoda je operace O(1).

Platí pro

Viz také