Udostępnij za pośrednictwem


LinkedList<T>.Enumerator Struktura

Definicja

Wylicza elementy elementu 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
Dziedziczenie
LinkedList<T>.Enumerator
Atrybuty
Implementuje

Uwagi

Instrukcja foreach języka C# (for each w języku C++, For Each w Visual Basic) ukrywa złożoność modułów wyliczania. Dlatego użycie foreach jest zalecane zamiast bezpośredniego manipulowania modułem wyliczającym.

Moduły wyliczające mogą służyć do odczytu danych w kolekcji, ale nie można za ich pomocą modyfikować kolekcji źródłowej.

Początkowo moduł wyliczający jest umieszczony przed pierwszym elementem w kolekcji. Na tym stanowisku Current jest niezdefiniowany. W związku z tym należy wywołać metodę MoveNext , aby przejść do pierwszego elementu kolekcji przed odczytaniem wartości Current.

Current Metoda zwraca ten sam obiekt, dopóki MoveNext nie zostanie wywołana. MoveNext ustawia Current element na następny.

Jeśli MoveNext przejdzie koniec kolekcji, moduł wyliczający zostanie umieszczony po ostatnim elemecie w kolekcji i MoveNext zwróci wartość false. Gdy moduł wyliczający znajduje się na tym stanowisku, kolejne wywołania , aby MoveNext również zwrócić falsewartość . Jeśli ostatnie wywołanie zwracane MoveNextfalse, Current jest niezdefiniowane. Nie można ponownie ustawić Current elementu na pierwszy element kolekcji. Zamiast tego należy utworzyć nowe wystąpienie modułu wyliczającego.

Moduł wyliczający zachowuje ważność tak długo, jak długo kolekcja pozostaje niezmieniona. W przypadku wprowadzania zmian w kolekcji, takich jak dodawanie, modyfikowanie lub usuwanie elementów, moduł wyliczający jest nieodwracalnie unieważniany, a następne wywołanie MoveNext metody lub IEnumerator.Reset zgłasza InvalidOperationExceptionbłąd .

Moduł wyliczający nie ma wyłącznego dostępu do kolekcji, w związku z tym wyliczanie w kolekcji nie jest wewnętrznie procedurą odporną na wielowątkowość. Aby zagwarantować bezpieczeństwo wątków podczas wyliczania, można zablokować kolekcję podczas całego procesu wyliczania. Aby zezwolić wielu wątkom na dostęp do kolekcji w celu odczytu i zapisu danych, należy zaimplementować własny mechanizm synchronizacji.

Domyślne implementacje kolekcji w programie System.Collections.Generic nie są synchronizowane.

Właściwości

Current

Pobiera element w bieżącej pozycji modułu wyliczającego.

Metody

Dispose()

Zwalnia wszelkie zasoby używane przez element LinkedList<T>.Enumerator.

MoveNext()

Przechodzi do następnego elementu modułu wyliczającego LinkedList<T>.

Jawne implementacje interfejsu

IDeserializationCallback.OnDeserialization(Object)

Implementuje ISerializable interfejs i zgłasza zdarzenie deserializacji po zakończeniu deserializacji.

IEnumerator.Current

Pobiera element w bieżącej pozycji modułu wyliczającego.

IEnumerator.Reset()

Ustawia moduł wyliczający na jego pozycję początkową, która jest przed pierwszym elementem w kolekcji. Klasa ta nie może być dziedziczona.

ISerializable.GetObjectData(SerializationInfo, StreamingContext)

Implementuje ISerializable interfejs i zwraca dane potrzebne do serializacji LinkedList<T> wystąpienia.

Dotyczy

Zobacz też