ActivityCollection.GetEnumerator Метод

Определение

Реализует интерфейс перечисления для коллекции ICollection.

public:
 System::Collections::Generic::IEnumerator<System::Workflow::ComponentModel::Activity ^> ^ GetEnumerator();
public System.Collections.Generic.IEnumerator<System.Workflow.ComponentModel.Activity> GetEnumerator ();
override this.GetEnumerator : unit -> System.Collections.Generic.IEnumerator<System.Workflow.ComponentModel.Activity>
Public Function GetEnumerator () As IEnumerator(Of Activity)

Возвращаемое значение

IEnumerator<Activity>

Перечислитель, с помощью которого можно перебирать все элементы экземпляра коллекции ReadOnlyCollectionBase.

Реализации

Комментарии

С помощью перечислителей можно только считывать данные из коллекции. Перечислители невозможно использовать для изменения коллекции.

Изначально перечислитель располагается перед первым элементом коллекции. Метод Reset также переводит перечислитель в эту позицию. В этой позиции вызов свойства Current приводит к появлению исключения. Поэтому необходимо вызвать метод MoveNext, чтобы переместить перечислитель к первому элементу коллекции до считывания значения свойства Current.

Current возвращает тот же объект, пока не будет вызван метод MoveNext или Reset. MoveNext задает Current в качестве значения для следующего элемента.

По окончании перебора коллекции перечислитель помещается за последним элементом коллекции и при вызове метода MoveNext возвращается значение false. Если при последнем вызове метода MoveNext возвращается значение false, обращение к свойству Current приводит к появлению исключения.

Чтобы снова задать в качестве значения свойства Current первый элемент коллекции, можно последовательно вызвать методы Reset иMoveNext.

Перечислитель является допустимым до тех пор, пока коллекция остается неизменной. Если в коллекцию вносятся изменения (например, были добавлены, изменены или удалены элементы), перечислитель становится необратимо недействительным, а при следующем вызове метода MoveNext или Reset появляется исключение InvalidOperationException. Если коллекция изменяется в промежутке между вызовом метода MoveNext и вызовом свойства Current, свойство Current возвращает элемент, для которого оно задано, даже если перечислитель уже недействителен.

У перечислителя нет эксклюзивного доступа к коллекции, поэтому перечисление коллекции не является потокобезопасной процедурой. Даже если коллекция является синхронизированной, другие потоки могут по-прежнему изменять коллекцию. Это заставляет перечислитель создавать исключение. Для обеспечения потокобезопасности при перечислении можно либо заблокировать коллекцию на все время перечисления, либо перехватывать исключения, возникающие в результате изменений, внесенных другими потоками.

Применяется к