ReadOnlyCollection<T>.IEnumerable.GetEnumerator Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Zwraca moduł wyliczający, który iteruje po kolekcji.
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
Zwraca
Obiekt IEnumerator, który może być używany do iterowania po kolekcji.
Implementuje
Uwagi
Instrukcja foreach języka C# (for each w języku Visual 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. Reset powoduje również powrót modułu wyliczającego do tej pozycji. 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 zwraca ten sam obiekt do momentu wywołania metody MoveNext lub Reset . 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 zwracają MoveNext również polecenie false. Jeśli ostatnie wywołanie, które MoveNext ma być zwrócone false, Current jest niezdefiniowane. Aby ponownie ustawić Current element na pierwszy element kolekcji, możesz wywołać Reset metodę .MoveNext
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 programie System.Collections.Generic nie są synchronizowane.
Ta metoda jest operacją O(1).
Ten element jest jawną implementacją członków. Można go używać tylko wtedy, gdy ReadOnlyCollection<T> wystąpienie jest rzutowanie do interfejsu IEnumerable .