LinkedList<T>.Enumerator Struktura

Definice

Vytvoří výčet prvků objektu LinkedList<T>.

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

Parametry typu

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

Poznámky

Příkaz foreach jazyka C# (For Each v Visual Basic) skryje složitost výčtů. Proto se místo přímé manipulace s enumerátorem doporučuje použití foreach .

Enumerátory lze použít ke čtení dat v kolekci, ale nelze je použít k úpravě podkladové 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 nebude volána. MoveNext nastaví Current na další prvek.

Pokud MoveNext předá konec kolekce, enumerátor je umístěn za posledním prvkem v kolekci a MoveNext vrátí .false Pokud je enumerátor na této pozici, následná volání vrátit MoveNext také false. Pokud se vrátí poslední volání MoveNextfalse, 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, například přidání, úpravy nebo odstranění prvků, enumerátor je nenávratně neplatný a další volání MoveNext nebo IEnumerator.Reset vyvolá výjimku InvalidOperationException.

Enumerátor nemá výhradní přístup k kolekci; proto výčet prostřednictvím kolekce není vnitřně bezpečným postupem pro přístup z více vláken. Chcete-li zaručit bezpečnost vláken během výčtu, můžete kolekci uzamknout během celého výčtu. Pokud chcete povolit přístup ke kolekci více vlákny pro čtení a zápis, musíte implementovat vlastní synchronizaci.

Výchozí implementace kolekcí nejsou System.Collections.Generic synchronizovány.

Vlastnosti

Name Description
Current

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

Metody

Name Description
Dispose()

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

MoveNext()

Přejde enumerátor na další prvek objektu LinkedList<T>.

Explicitní implementace rozhraní

Name Description
IDeserializationCallback.OnDeserialization(Object)

Implementuje ISerializable rozhraní a vyvolá deserializační událost po dokončení deserializace.

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. Tato třída se nemůže dědit.

ISerializable.GetObjectData(SerializationInfo, StreamingContext)

Implementuje ISerializable rozhraní a vrací data potřebná k serializaci LinkedList<T> instance.

Platí pro

Viz také