Поделиться через


ControlCollectionEnumerator Класс (2007 System)

Обновлен: Ноябрь 2007

Перечислитель, осуществляющий итерацию элементов экземпляра коллекции ControlCollection.

Пространство имен:  Microsoft.Office.Tools.Word
Сборка:  Microsoft.Office.Tools.Word.v9.0 (в Microsoft.Office.Tools.Word.v9.0.dll)

Синтаксис

'Декларация
<PermissionSetAttribute(SecurityAction.Demand, Name := "FullTrust")> _
Public Class ControlCollectionEnumerator _
    Implements IEnumerator
'Применение
Dim instance As ControlCollectionEnumerator
[PermissionSetAttribute(SecurityAction.Demand, Name = "FullTrust")]
public class ControlCollectionEnumerator : IEnumerator

Заметки

Оператор foreach языка C# (оператор for each в Visual Basic) скрывает сложности использования перечислителей. Поэтому вместо непосредственного использования перечислителя рекомендуется применять ключевое слово foreach.

Перечислители можно использовать только для чтения данных коллекции; их нельзя использовать для изменения коллекции.

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

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

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

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

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

Иерархия наследования

System.Object
  Microsoft.Office.Tools.Word.ControlCollectionEnumerator

Потокобезопасность

Любые открытые члены этого типа, объявленные как static (Shared в Visual Basic), являются потокобезопасными. Потокобезопасность членов экземпляров не гарантируется.

См. также

Ссылки

ControlCollectionEnumerator - члены

Microsoft.Office.Tools.Word - пространство имен