Dictionary<TKey,TValue>.IEnumerable.GetEnumerator Metoda

Definice

Získá enumerátor, který provádí iteraci v kolekci.

 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

Enumerátor IEnumerator, který lze použít pro iteraci prostřednictvím kolekce

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. Metoda Reset také vrátí enumerátor zpět do této pozice. V této pozici Current je vlastnost nedefinovaná. 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 není MoveNext volána metoda nebo Reset . 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. Pokud chcete znovu nastavit Current první prvek kolekce, můžete zavolat Reset a pak 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 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 vlákna. Abyste zajistili bezpečnost vláken během výčtu, můžete kolekci uzamknout 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 System.Collections.Generic oboru názvů se nesynchronují.

Tato metoda je operace O(1).

Platí pro

Viz také