DictionaryBase.IEnumerable.GetEnumerator Metoda

Definice

Vrátí objekt IEnumerator , který projde DictionaryBase .Returns an IEnumerator that iterates through the DictionaryBase.

 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

IEnumerator

IEnumeratorPro DictionaryBase .An IEnumerator for the DictionaryBase.

Implementuje

Poznámky

foreachPříkaz jazyka C# ( for each v Visual Basic) skrývá složitost enumerátorů.The foreach statement of the C# language (for each in Visual Basic) hides the complexity of the enumerators. Proto foreach se doporučuje použít místo přímé manipulace s enumerátorem.Therefore, using foreach is recommended, instead of directly manipulating the enumerator.

Enumerátory lze používat ke čtení dat v kolekci, nikoli však k úpravě zdrojové kolekce.Enumerators can be used to read the data in the collection, but they cannot be used to modify the underlying collection.

Zpočátku je enumerátor umístěn před první prvek v kolekci.Initially, the enumerator is positioned before the first element in the collection. Reset také přenese enumerátor zpět na tuto pozici.Reset also brings the enumerator back to this position. Na této pozici volání Current vyvolá výjimku.At this position, calling Current throws an exception. Proto je nutné zavolat MoveNext pro pokračování enumerátoru na první prvek kolekce před čtením hodnoty Current .Therefore, you must call MoveNext to advance the enumerator to the first element of the collection before reading the value of Current.

Current vrátí stejný objekt, dokud MoveNext Reset není volán buď nebo.Current returns the same object until either MoveNext or Reset is called. MoveNext nastaví Current na další prvek.MoveNext sets Current to the next element.

Pokud MoveNext předá konec kolekce, enumerátor je umístěn za posledním prvkem v kolekci a MoveNext vrátí false .If MoveNext passes the end of the collection, the enumerator is positioned after the last element in the collection and MoveNext returns false. Když je na této pozici enumerátor, následné volání MoveNext vrátí také false .When the enumerator is at this position, subsequent calls to MoveNext also return false. Pokud poslední volání MoveNext vráceno false , volání Current vyvolá výjimku.If the last call to MoveNext returned false, calling Current throws an exception. Chcete-li nastavit Current první prvek kolekce znovu, můžete zavolat Reset následovaný MoveNext .To set Current to the first element of the collection again, you can call Reset followed by MoveNext.

Enumerátor zůstává platný, dokud kolekce nezůstane beze změny.An enumerator remains valid as long as the collection remains unchanged. Pokud jsou provedeny změny v kolekci, jako je například přidání, úprava nebo odstranění prvků, enumerátor je nevratně Neověřeno a další volání MoveNext nebo vyvolá výjimku Reset InvalidOperationException .If changes are made to the collection, such as adding, modifying, or deleting elements, the enumerator is irrecoverably invalidated and the next call to MoveNext or Reset throws an InvalidOperationException. Pokud je kolekce upravována mezi MoveNext a Current , Current vrátí prvek, na který je nastaven, i v případě, že je již neověřen enumerátor.If the collection is modified between MoveNext and Current, Current returns the element that it is set to, even if the enumerator is already invalidated.

Enumerátor nemá výhradní přístup k této kolekci; Proto výčet prostřednictvím kolekce je vnitřně nebezpečný pro přístup z více vláken.The enumerator does not have exclusive access to the collection; therefore, enumerating through a collection is intrinsically not a thread-safe procedure. 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.Even when a collection is synchronized, other threads can still modify the collection, which causes the enumerator to throw an exception. 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.To guarantee thread safety during enumeration, you can either lock the collection during the entire enumeration or catch the exceptions resulting from changes made by other threads.

Tato metoda je O(1) operace.This method is an O(1) operation.

Platí pro

Viz také