Queue<T>.Enumerator Struktura

Definice

Vyčísluje prvky .Queue<T>

public: value class Queue<T>::Enumerator : System::Collections::Generic::IEnumerator<T>
public struct Queue<T>.Enumerator : System.Collections.Generic.IEnumerator<T>
[System.Serializable]
public struct Queue<T>.Enumerator : System.Collections.Generic.IEnumerator<T>
type Queue<'T>.Enumerator = struct
    interface IEnumerator<'T>
    interface IEnumerator
    interface IDisposable
[<System.Serializable>]
type Queue<'T>.Enumerator = struct
    interface IEnumerator<'T>
    interface IDisposable
    interface IEnumerator
[<System.Serializable>]
type Queue<'T>.Enumerator = struct
    interface IEnumerator<'T>
    interface IEnumerator
    interface IDisposable
Public Structure Queue(Of T).Enumerator
Implements IEnumerator(Of T)

Parametry typu

T
Dědičnost
Queue<T>.Enumerator
Atributy
Implementuje

Poznámky

Příkaz foreach jazyka C# (for eachv jazyce C++, For Each v Visual Basic) skryje složitost výčtů. 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.

Na začátku je enumerátor umístěn před prvním prvkem v kolekci. V této pozici Current není definováno. Proto je nutné volat MoveNext , aby se enumerátor před čtením hodnoty Current.

Current vrátí stejný objekt, dokud MoveNext se nevolá. MoveNext nastaví Current na další prvek.

Pokud MoveNext předá 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, následná volání, která se MoveNext mají vrátit false. Pokud se vrátí falseposlední voláníMoveNext, Current není definováno. Znovu nelze nastavit Current první prvek kolekce. Místo toho je nutné vytvořit novou instanci enumerátoru.

Enumerátor zůstane platný, dokud kolekce zůstane beze změny. Pokud jsou v kolekci provedeny změny, jako je přidání, úprava nebo odstranění prvků, enumerátor je nevratně neplatný a další volání MoveNext nebo IEnumerator.Reset vyvolá chybu InvalidOperationException.

Enumerátor nemá výhradní přístup k kolekci; proto výčet prostřednictvím kolekce není vnitřně bezpečným postupem vlákna. Chcete-li zaručit 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í implementacekolekcch System.Collections.Generic

Vlastnosti

Current

Získá prvek na aktuální pozici enumerátoru.

Metody

Dispose()

Uvolní všechny prostředky používané nástrojem Queue<T>.Enumerator.

MoveNext()

Posune enumerátor na další prvek Queue<T>.

Explicitní implementace rozhraní

IEnumerator.Current

Získá prvek na aktuální pozici enumerátoru.

IEnumerator.Reset()

Nastaví enumerátor na počáteční pozici, která je před prvním prvkem v kolekci.

Platí pro

Viz také