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


ControlCollectionEnumerator Класс (2007 System)

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

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

Пространство имен:  Microsoft.Office.Tools.Excel
Сборка:  Microsoft.Office.Tools.Excel.v9.0 (в Microsoft.Office.Tools.Excel.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 приводит к исключению. Поэтому необходимо вызвать метод MoveNext до считывания значения свойства Current, чтобы переместить перечислитель к первому элементу коллекции.

Свойство 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.Excel.ControlCollectionEnumerator

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

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

См. также

Ссылки

ControlCollectionEnumerator - члены

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