MaterialCollection.GetEnumerator Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает перечислитель, который может выполнять итерации по коллекции.
public:
System::Windows::Media::Media3D::MaterialCollection::Enumerator GetEnumerator();
public System.Windows.Media.Media3D.MaterialCollection.Enumerator GetEnumerator ();
member this.GetEnumerator : unit -> System.Windows.Media.Media3D.MaterialCollection.Enumerator
Public Function GetEnumerator () As MaterialCollection.Enumerator
Возвращаемое значение
Перечислитель, который может выполнять итерацию коллекции.
Комментарии
Перечислители разрешают только чтение данных в коллекции. Перечислители нельзя использовать для изменения базовой коллекции.
Изначально перечислитель размещается перед первым элементом в коллекции. В этой позиции вызов Current вызывает исключение. Поэтому перед чтением значения Current необходимо вызвать MoveNext перечислитель к первому элементу коллекции.
Текущий возвращает тот же объект, пока не вызывается MoveNext или Reset не вызывается. MoveNext задает значение Current для следующего элемента.
После прохождения конца коллекции перечислитель позиционируется после последнего элемента в коллекции, а вызов MoveNext возвращает значение false. Если последний вызов MoveNext вернул значение false, вызов Current создает исключение. Чтобы снова задать текущее значение для первого элемента коллекции, можно вызвать reset, а затем MoveNext.
Перечислитель является допустимым до тех пор, пока коллекция остается неизменной. Если изменения вносятся в коллекцию, например добавление, изменение или удаление элементов, перечислитель неустранимо недопустим, а следующий вызов MoveNext или Reset вызывает исключение InvalidOperationException. Если коллекция изменяется между MoveNext и Current, Current вернет заданный элемент, даже если перечислитель уже является недействительным.
У перечислителя нет эксклюзивного доступа к коллекции, поэтому перечисление коллекции не является потокобезопасной процедурой. Даже при синхронизации коллекции другие потоки могут по-прежнему изменять коллекцию, что приводит к возникновению исключения перечислителем. Для обеспечения потокобезопасности при перечислении можно либо заблокировать коллекцию на все время перечисления, либо перехватывать исключения, возникающие в результате изменений, внесенных другими потоками.