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)
Возвращаемое значение
Перечислитель, с помощью которого можно перебирать все элементы экземпляра коллекции ReadOnlyCollectionBase.
Реализации
Комментарии
С помощью перечислителей можно только считывать данные из коллекции. Перечислители невозможно использовать для изменения коллекции.
Изначально перечислитель располагается перед первым элементом коллекции. Метод Reset также переводит перечислитель в эту позицию. В этой позиции вызов свойства Current приводит к появлению исключения. Поэтому необходимо вызвать метод MoveNext, чтобы переместить перечислитель к первому элементу коллекции до считывания значения свойства Current.
Current возвращает тот же объект, пока не будет вызван метод MoveNext или Reset. MoveNext задает Current в качестве значения для следующего элемента.
По окончании перебора коллекции перечислитель помещается за последним элементом коллекции и при вызове метода MoveNext возвращается значение false
. Если при последнем вызове метода MoveNext возвращается значение false
, обращение к свойству Current приводит к появлению исключения.
Чтобы снова задать в качестве значения свойства Current
первый элемент коллекции, можно последовательно вызвать методы Reset
иMoveNext.
Перечислитель является допустимым до тех пор, пока коллекция остается неизменной. Если в коллекцию вносятся изменения (например, были добавлены, изменены или удалены элементы), перечислитель становится необратимо недействительным, а при следующем вызове метода MoveNext или Reset
появляется исключение InvalidOperationException. Если коллекция изменяется в промежутке между вызовом метода MoveNext и вызовом свойства Current, свойство Current возвращает элемент, для которого оно задано, даже если перечислитель уже недействителен.
У перечислителя нет эксклюзивного доступа к коллекции, поэтому перечисление коллекции не является потокобезопасной процедурой. Даже если коллекция является синхронизированной, другие потоки могут по-прежнему изменять коллекцию. Это заставляет перечислитель создавать исключение. Для обеспечения потокобезопасности при перечислении можно либо заблокировать коллекцию на все время перечисления, либо перехватывать исключения, возникающие в результате изменений, внесенных другими потоками.