Sdílet prostřednictvím


MethodDataCollection.IEnumerable.GetEnumerator Metoda

Definice

Vrátí hodnotu IEnumerator , která iteruje přes MethodDataCollection.

 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

An IEnumerator pro MethodDataCollection.

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žít 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 na tuto pozici. Na této pozici vyvolá volání Current výjimku. Proto je nutné před čtením hodnoty Currentvolat MoveNext k posunu enumerátoru na první prvek kolekce.

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

Pokud MoveNext projde konec kolekce, enumerátor se umístí za poslední prvek v kolekci a MoveNext vrátí false. Když je enumerátor na této pozici, následné volání také MoveNext vrátí false. Pokud se vrátilo falseposlední volání MoveNext , vyvolá volání Current výjimku. Pokud chcete znovu nastavit Current první prvek kolekce, můžete volat Reset a potom 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ů, enumerátor je nenávratně 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 enumerátor již zneplatněný.

Enumerátor nemá výhradní přístup ke kolekci; proto výčet prostřednictvím kolekce není ze své podstaty procedurou bezpečnou pro přístup z více vláken. 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 operace O(1).

Platí pro