ByteKeyFrameCollection.GetEnumerator Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает перечислитель, который может выполнять итерации по коллекции.
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
Возвращаемое значение
IEnumerator, который служит для прохода по коллекции.
Реализации
Комментарии
Перечислители разрешают только чтение данных в коллекции. Перечислители нельзя использовать для изменения базовой коллекции.
Изначально перечислитель размещается перед первым элементом в коллекции. Метод Reset также переводит перечислитель в эту позицию. В этой позиции вызов Current вызывает исключение. Поэтому перед чтением значения Currentнеобходимо вызвать MoveNext перечислитель к первому элементу коллекции.
Current возвращает тот же объект, пока не будет вызван метод MoveNext или Reset. MoveNext задает Current для следующего элемента.
После завершения коллекции перечислитель позиционируется после последнего элемента в коллекции и возвращает вызов MoveNext false
. Если последний вызов MoveNext возвращен, false
вызов Current вызывает исключение. Чтобы снова задать Current первый элемент коллекции, можно вызватьReset.MoveNext
Перечислитель является допустимым до тех пор, пока коллекция остается неизменной. Если в коллекцию вносятся изменения, такие как добавление, изменение или удаление элементов, перечислитель неустранимо недопустим, а следующий вызов MoveNext или вызов вызывает исключение Reset InvalidOperationException. Если коллекция изменяется и MoveNext CurrentCurrent возвращает заданный элемент, даже если перечислитель уже является недействительным.
У перечислителя нет эксклюзивного доступа к коллекции, поэтому перечисление коллекции не является потокобезопасной процедурой. Даже при синхронизации коллекции другие потоки могут по-прежнему изменять коллекцию, что приводит к возникновению исключения перечислителем. Для обеспечения потокобезопасности при перечислении можно либо заблокировать коллекцию на все время перечисления, либо перехватывать исключения, возникающие в результате изменений, внесенных другими потоками.