SingleKeyFrameCollection.GetEnumerator Metoda

Definicja

Zwraca moduł wyliczający, który może wykonać iterację kolekcji.Returns an enumerator that can iterate through the collection.

public:
 virtual System::Collections::IEnumerator ^ GetEnumerator();
public System.Collections.IEnumerator GetEnumerator ();
abstract member GetEnumerator : unit -> System.Collections.IEnumerator
override this.GetEnumerator : unit -> System.Collections.IEnumerator
Public Function GetEnumerator () As IEnumerator

Zwraca

IEnumerator , Który może wykonywać iterację kolekcji.An IEnumerator that can iterate through the collection.

Implementuje

Uwagi

Moduły wyliczające umożliwiają odczytywanie danych w kolekcji.Enumerators only allow reading the data in the collection. Nie można użyć modułów wyliczających do modyfikacji źródłowej kolekcji.Enumerators cannot be used to modify the underlying collection.

Początkowo moduł wyliczający jest umieszczony przed pierwszym elementem w kolekcji.Initially, the enumerator is positioned before the first item in the collection. Resetprzywraca również moduł wyliczający z powrotem do tego położenia.Reset also brings the enumerator back to this position. W tym miejscu wywołanie Current zgłasza wyjątek.At this position, calling Current throws an exception. W związku z tym przed MoveNext przeczytaniem Currentwartości parametru należy wywołać metodę wyliczającą do pierwszego elementu kolekcji.Therefore, you must call MoveNext to advance the enumerator to the first item of the collection before reading the value of Current.

Currentzwraca ten sam obiekt do MoveNext momentu Reset wywołania metody lub.Current returns the same object until either MoveNext or Reset is called. MoveNextustawia Current następną pozycję.MoveNext sets Current to the next item.

Po przekazaniu końca kolekcji moduł wyliczający jest umieszczony po ostatnim elemencie w kolekcji i wywołuje MoveNext metodę Returns. falseAfter the end of the collection is passed, the enumerator is positioned after the last item in the collection, and calling MoveNext returns false. Jeśli ostatnie wywołanie MoveNext zwrócone false, wywołanie Current zgłasza wyjątek.If the last call to MoveNext returned false, calling Current throws an exception. Aby ponownie Current ustawić na pierwszy element kolekcji, możesz wywołać metodę Reset i MoveNext.To set Current to the first item of the collection again, you can call Reset followed by MoveNext.

Moduł wyliczający zachowuje ważność tak długo, jak długo kolekcja pozostaje niezmieniona.An enumerator remains valid as long as the collection remains unchanged. Jeśli w kolekcji zostaną wprowadzone zmiany, takie jak dodanie, zmodyfikowanie lub usunięcie elementów, moduł wyliczający jest nieodwracalnie unieważniony i następne wywołanie MoveNext lub Reset InvalidOperationExceptionwyrzuca.If changes are made to the collection, such as adding, modifying or deleting items, the enumerator is irrecoverably invalidated and the next call to MoveNext or Reset throws an InvalidOperationException. Jeśli kolekcja zostanie zmodyfikowana między MoveNext i Current, Current zwróci element, który jest ustawiony na, nawet jeśli moduł wyliczający jest już unieważniony.If the collection is modified between MoveNext and Current, Current will return the item that it is set to, even if the enumerator is already invalidated.

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ść.The enumerator does not have exclusive access to the collection; therefore, enumerating through a collection is intrinsically not a thread-safe procedure. Nawet w przypadku synchronizacji kolekcji inne wątki mogą nadal modyfikować kolekcję, co powoduje zgłoszenie wyjątku przez moduł wyliczający.Even when a collection is synchronized, other threads could still modify the collection, which causes the enumerator to throw an exception. 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.To guarantee thread safety during enumeration, you can either lock the collection during the entire enumeration or catch the exceptions resulting from changes made by other threads.

Dotyczy