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 - пространство имен