CachedDataHostItemEnumerator - класс
Выполняет итерацию коллекции CachedDataHostItemCollection.
Иерархия наследования
System.Object
Microsoft.VisualStudio.Tools.Applications.CachedDataHostItemEnumerator
Пространство имен: Microsoft.VisualStudio.Tools.Applications
Сборка: Microsoft.VisualStudio.Tools.Applications.ServerDocument (в Microsoft.VisualStudio.Tools.Applications.ServerDocument.dll)
Синтаксис
'Декларация
<PermissionSetAttribute(SecurityAction.Demand, Name := "FullTrust")> _
Public NotInheritable Class CachedDataHostItemEnumerator _
Implements IEnumerator(Of CachedDataHostItem), IDisposable, _
IEnumerator
[PermissionSetAttribute(SecurityAction.Demand, Name = "FullTrust")]
public sealed class CachedDataHostItemEnumerator : IEnumerator<CachedDataHostItem>,
IDisposable, IEnumerator
Тип CachedDataHostItemEnumerator предоставляет следующие члены.
Свойства
Имя | Описание | |
---|---|---|
Current | Возвращает CachedDataHostItem в текущем положении перечислителя. |
В начало страницы
Методы
Имя | Описание | |
---|---|---|
Equals | Определяет, равен ли заданный объект текущему объекту. (Унаследовано от Object.) | |
GetHashCode | Играет роль хэш-функции для определенного типа. (Унаследовано от Object.) | |
GetType | Возвращает объект Type для текущего экземпляра. (Унаследовано от Object.) | |
MoveNext | Перемещает перечислитель к следующему CachedDataHostItem в CachedDataHostItemCollection. | |
Reset | Устанавливает перечислитель в его начальное положение, перед первым элементом набора CachedDataHostItem. | |
ToString | Возвращает строку, представляющую текущий объект. (Унаследовано от Object.) |
В начало страницы
Явные реализации интерфейса
Имя | Описание | |
---|---|---|
IEnumerator.Current | Описание этого члена см. в разделе Current. | |
IDisposable.Dispose | Освобождает все ресурсы, используемые объектом CachedDataHostItemEnumerator. |
В начало страницы
Заметки
Оператор 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 - пространство имен