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), являются потокобезопасными. Потокобезопасность членов экземпляров не гарантируется.