Udostępnij za pośrednictwem


DictionaryBase.IEnumerable.GetEnumerator Metoda

Definicja

Zwraca wartość IEnumerator , która iteruje za pośrednictwem elementu DictionaryBase.

 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

Element IEnumerator dla elementu DictionaryBase.

Implementuje

Uwagi

Instrukcja foreach języka 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. Reset powoduje również powrót modułu wyliczającego do tej pozycji. W tej pozycji wywołanie Current zgłasza wyjątek. 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 do momentu wywołania metody MoveNext lub Reset . 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, wywołanie Current metody zgłasza wyjątek. Aby ponownie ustawić Current element na pierwszy element kolekcji, możesz wywołać Reset metodę , a następnie .MoveNext

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 Reset zgłasza InvalidOperationExceptionbłąd . Jeśli kolekcja jest modyfikowana między elementami MoveNext i Current, Current zwraca element ustawiony na , nawet jeśli moduł wyliczający jest już unieważniony.

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ść. Nawet gdy kolekcja jest synchronizowana, inne wątki nadal mogą ją modyfikować. Powoduje to zgłaszanie wyjątku przez moduł wyliczający. Aby zagwarantować bezpieczeństwo wątków podczas wyliczania, można zablokować kolekcję podczas całego procesu wyliczania albo rejestrować wyjątki wynikłe ze zmian wprowadzanych przez inne wątków.

Ta metoda jest operacją O(1) .

Dotyczy

Zobacz też