Hashtable.IEnumerable.GetEnumerator Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Vrací enumerátor procházející 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 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. Reset také vrátí enumerátor zpět do této pozice. V této pozici vyvolá volání Current výjimku. Proto je nutné před čtením hodnoty CurrentvolatMoveNext, aby se enumerátor přepojí na první prvek kolekce.
Current vrátí stejný objekt, dokud není volána nebo MoveNextReset . 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í false
také . Pokud se poslední volání vrátilo false
, MoveNext vyvolá volání Current výjimku. 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í, úprava nebo odstranění prvků, může být enumerátor zneplatněný a další volání MoveNext nebo Reset vyvolá InvalidOperationException. Pokud je kolekce změněna mezi MoveNext a Current, Current vrátí prvek, na který je nastavena, i když je výčet již neplatný.
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. I v případě, že jde o synchronizovanou kolekci, mohou úpravy provádět i ostatní vlákna, což způsobuje vyvolání výjimky enumerátorem. K zaručení bezpečnosti přístupu z více vláken můžete buďto zamknout kolekci na celou dobu práce s výčtem, nebo zachycovat výjimky vzniklé v důsledku změn prováděných ostatními vlákny.
Tato metoda je O(1)
operace.