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


CachedDataItemEnumerator - класс

Выполняет итерацию коллекции CachedDataItemCollection.

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

System.Object
  Microsoft.VisualStudio.Tools.Applications.CachedDataItemEnumerator

Пространство имен:  Microsoft.VisualStudio.Tools.Applications
Сборка:  Microsoft.VisualStudio.Tools.Applications.ServerDocument (в Microsoft.VisualStudio.Tools.Applications.ServerDocument.dll)

Синтаксис

'Декларация
<PermissionSetAttribute(SecurityAction.Demand, Name := "FullTrust")> _
Public NotInheritable Class CachedDataItemEnumerator _
    Implements IEnumerator(Of CachedDataItem), IDisposable,  _
    IEnumerator
[PermissionSetAttribute(SecurityAction.Demand, Name = "FullTrust")]
public sealed class CachedDataItemEnumerator : IEnumerator<CachedDataItem>, 
    IDisposable, IEnumerator

Тип CachedDataItemEnumerator предоставляет следующие члены.

Свойства

  Имя Описание
Открытое свойство Current Возвращает CachedDataItem в текущем положении перечислителя.

В начало страницы

Методы

  Имя Описание
Открытый метод Equals Определяет, равен ли заданный объект текущему объекту. (Унаследовано от Object.)
Открытый метод GetHashCode Играет роль хэш-функции для определенного типа. (Унаследовано от Object.)
Открытый метод GetType Возвращает объект Type для текущего экземпляра. (Унаследовано от Object.)
Открытый метод MoveNext Перемещает перечислитель к следующему CachedDataItem в CachedDataItemCollection.
Открытый метод Reset Устанавливает перечислитель в его начальное положение, перед первым элементом коллекции CachedDataItem.
Открытый метод ToString Возвращает строку, представляющую текущий объект. (Унаследовано от Object.)

В начало страницы

Явные реализации интерфейса

  Имя Описание
Явная реализация интерфейсаЗакрытое свойство IEnumerator.Current Описание этого члена см. в разделе Current.
Явная реализация интерфейсаЗакрытый метод IDisposable.Dispose Освобождает все ресурсы, используемые объектом CachedDataItemEnumerator.

В начало страницы

Заметки

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

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

Изначально перечислитель располагается перед первым элементом коллекции.Метод 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 возвращает элемент, для которого оно задано, даже если перечислитель уже недействителен.

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

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

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

См. также

Ссылки

Microsoft.VisualStudio.Tools.Applications - пространство имен