Compartilhar via


Classe CachedDataItemEnumerator

Itera por meio de um CachedDataItemCollection.

Hierarquia de herança

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

Namespace:  Microsoft.VisualStudio.Tools.Applications
Assembly:  Microsoft.VisualStudio.Tools.Applications.ServerDocument (em Microsoft.VisualStudio.Tools.Applications.ServerDocument.dll)

Sintaxe

'Declaração
<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

O tipo CachedDataItemEnumerator expõe os membros a seguir.

Propriedades

  Nome Descrição
Propriedade pública Current Obtém o CachedDataItem na posição atual do enumerador.

Superior

Métodos

  Nome Descrição
Método público Equals Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object.)
Método público GetHashCode Serve como a função de hash padrão. (Herdado de Object.)
Método público GetType Obtém Type da instância atual. (Herdado de Object.)
Método público MoveNext Avança o enumerador para o próximo CachedDataItem na CachedDataItemCollection.
Método público Reset Define o enumerador para sua posição inicial, que é antes do primeiro CachedDataItem na coleção.
Método público ToString Retorna uma cadeia de caracteres que representa o objeto atual. (Herdado de Object.)

Superior

Implementações explícitas da interface

  Nome Descrição
Implementação explícita da interfacePropriedade particular IEnumerator.Current Para obter uma descrição desse membro, consulte Current.
Implementação explícita da interfaceMétodo particular IDisposable.Dispose Libera todos os recursos usados pela CachedDataItemEnumerator.

Superior

Comentários

Visual Basic e C# cada contenham uma instrução que oculta a complexidade dos enumeradores (foreach em C# e For Each em Visual Basic). Use a instrução apropriada para o idioma que você estiver usando, em vez de manipular diretamente o enumerador.

Enumeradores podem ser usados para ler os dados na coleção, mas eles não podem ser usados para modificar a coleção subjacente.

Inicialmente, o enumerador está posicionado antes do primeiro elemento na coleção. O Reset método também traz o enumerador voltar para essa posição. Nesta posição, definindo a Current propriedade lança uma exceção. Portanto, você deve chamar o MoveNext método para avançar o enumerador para o primeiro elemento da coleção antes de ler o valor de Current.

CurrentRetorna o mesmo objeto até MoveNext ou Reset é chamado. MoveNextdefine Current para o próximo elemento.

Se MoveNext passa o final da coleção, o enumerador está posicionado após o último elemento na coleção e MoveNext retorna false. Quando o enumerador está nessa posição, chamadas subseqüentes para MoveNext também retornará false. Se a última chamada para MoveNext retornou false, chamada Current lança uma exceção. Para definir Current para o primeiro elemento da coleção novamente, você pode chamar Reset seguido de MoveNext.

Um enumerador permanece válido, desde que a coleção permaneça inalterada. Se houver alterações à coleção, tais como adicionar, modificar, ou excluir elementos, o enumerador é irrecoverably invalidado e a próxima chamada para MoveNext ou Reset lança um InvalidOperationException. Se a coleção é modificada entre MoveNext e Current, Current retorna o elemento que ele está definido, mesmo se o enumerador já é invalidado.

O enumerador não tem acesso exclusivo à coleção; Portanto, enumerando através de uma coleção intrinsecamente não é um procedimento de thread-safe. Mesmo quando uma coleção é sincronizada, outros Threads poderá ainda modificar a coleção, que faz com que o enumerador para gerar uma exceção. Para garantir segurança de segmentos durante enumeração, você pode bloquear a coleção durante a enumeração inteira ou pegar as exceções resultantes de alterações feitas por outros segmentos.

Acesso thread-safe

Quaisquer membros estático (Shared no Visual Basic) públicos deste tipo são thread-safe. Não há garantia de que qualquer membro de instância seja thread-safe.

Consulte também

Referência

Namespace Microsoft.VisualStudio.Tools.Applications