IDTSPathCollection100.GetEnumerator Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
public:
System::Collections::IEnumerator ^ GetEnumerator();
[System.Runtime.InteropServices.DispId(-4)]
public System.Collections.IEnumerator GetEnumerator();
[<System.Runtime.InteropServices.DispId(-4)>]
abstract member GetEnumerator : unit -> System.Collections.IEnumerator
Public Function GetEnumerator () As IEnumerator
Возвращаемое значение
Возвращает IEnumerator , который используется для итераций коллекции.
Реализации
- Атрибуты
Комментарии
Перечислители разрешают только чтение данных в коллекции. Перечислители нельзя использовать для изменения базовой коллекции.
Изначально перечислитель размещается перед первым элементом в коллекции. Сброс также возвращает переписчик в это положение. В этой позиции вызов Current даёт исключение. Поэтому необходимо вызвать MoveNext , чтобы перевести переписчик к первому элементу коллекции перед чтением значения Current.
Current возвращает тот же объект до вызова MoveNext или Reset . MoveNext устанавливает Current для следующего элемента.
После завершения коллекции переписчик размещается после последнего элемента коллекции, и вызов MoveNext возвращает false. Если последний вызов MoveNextвозвращал ошибку, вызов Current вызывает исключение. Чтобы снова установить Current на первый элемент коллекции, можно вызвать Reset , а затем MoveNext.
Перечислитель остается допустимым, пока коллекция остается неизменной. Если в коллекцию вносятся изменения, такие как добавление, изменение или удаление элементов, переписчик становится необратимо недействительным, а следующий вызов MoveNext или Reset вызывает InvalidOperationException. Если коллекция изменяется между MoveNext и Current, Current возвращает элемент, на который она назначена, даже если переписчик уже аннулирован.
Перечислитель не имеет монопольного доступа к коллекции; Таким образом, перечисление через коллекцию по сути не является потокобезопасной процедурой. Даже если коллекция синхронизирована, другие потоки по-прежнему могут изменять коллекцию, что приводит к возникновению исключения перечислителем. Чтобы гарантировать безопасность потоков во время перечисления, можно заблокировать коллекцию во время всего перечисления или поймать исключения, полученные из изменений, внесенных другими потоками.