Udostępnij za pośrednictwem


HashSet<T>.IEnumerable<T>.GetEnumerator Metoda

Definicja

Zwraca moduł wyliczający, który iteruje po kolekcji.

 virtual System::Collections::Generic::IEnumerator<T> ^ System.Collections.Generic.IEnumerable<T>.GetEnumerator() = System::Collections::Generic::IEnumerable<T>::GetEnumerator;
System.Collections.Generic.IEnumerator<T> IEnumerable<T>.GetEnumerator ();
abstract member System.Collections.Generic.IEnumerable<T>.GetEnumerator : unit -> System.Collections.Generic.IEnumerator<'T>
override this.System.Collections.Generic.IEnumerable<T>.GetEnumerator : unit -> System.Collections.Generic.IEnumerator<'T>
Function GetEnumerator () As IEnumerator(Of T) Implements IEnumerable(Of T).GetEnumerator

Zwraca

Obiekt IEnumerator<T>, który może służyć do iterowania po kolekcji.

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. W związku z tym użycie foreach jest zalecane, zamiast bezpośrednio manipulować 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 właściwość jest niezdefiniowana. W związku z tym należy wywołać metodę MoveNext , aby przejść do pierwszego elementu kolekcji przed odczytaniem wartości Current.

Właściwość Current zwraca ten sam obiekt do MoveNext momentu wywołania. MoveNext ustawia Current wartość na następny element.

Jeśli MoveNext przejdzie koniec kolekcji, moduł wyliczający jest umieszczony po ostatnim elemecie w kolekcji i MoveNext zwraca 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, które MoveNext ma być zwrócone false, Current jest niezdefiniowane. Nie można ponownie ustawić Current pierwszego elementu kolekcji. Zamiast tego należy utworzyć nowy obiekt modułu wyliczającego.

Moduł wyliczający zachowuje ważność tak długo, jak długo kolekcja pozostaje niezmieniona. Jeśli w kolekcji zostaną wprowadzone zmiany, takie jak dodanie, zmodyfikowanie czy usunięcie elementów, moduł wyliczający jest nieodwracalnie unieważniany, a jego zachowanie staje się niezdefiniowane.

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 System.Collections.Generic przestrzeni nazw nie są synchronizowane.

Ta metoda jest operacją O(1).

Dotyczy

Zobacz też