Partilhar via


Dictionary<TKey,TValue>.ValueCollection.Enumerator Estrutura

Definição

Enumera os elementos de uma Dictionary<TKey,TValue>.ValueCollection.

public: value class Dictionary<TKey, TValue>::ValueCollection::Enumerator : System::Collections::Generic::IEnumerator<TValue>
public struct Dictionary<TKey,TValue>.ValueCollection.Enumerator : System.Collections.Generic.IEnumerator<TValue>
[System.Serializable]
public struct Dictionary<TKey,TValue>.ValueCollection.Enumerator : System.Collections.Generic.IEnumerator<TValue>
type Dictionary<'Key, 'Value>.ValueCollection.Enumerator = struct
    interface IEnumerator<'Value>
    interface IEnumerator
    interface IDisposable
[<System.Serializable>]
type Dictionary<'Key, 'Value>.ValueCollection.Enumerator = struct
    interface IEnumerator<'Value>
    interface IDisposable
    interface IEnumerator
Public Structure Dictionary(Of TKey, TValue).ValueCollection.Enumerator
Implements IEnumerator(Of TValue)

Parâmetros de tipo

TKey
TValue
Herança
Dictionary<TKey,TValue>.ValueCollection.Enumerator
Atributos
Implementações

Comentários

A instrução foreach da linguagem C# (for each em C++, For Each no Visual Basic) oculta a complexidade de enumeradores. Portanto, o uso de foreach é recomendado, em vez de manipular diretamente o enumerador.

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

Inicialmente, o enumerador é posicionado antes do primeiro elemento da coleção. Nesta posição, Current está indefinido. Você deve chamar MoveNext para avançar o enumerador para o primeiro elemento da coleção antes de ler o valor de Current.

Current retorna o mesmo objeto até MoveNext que seja chamado. MoveNext define Current como o próximo elemento.

Caso MoveNext passe o final da coleção, o enumerador é posicionado após o último elemento na coleção e MoveNext retorna false. Quando o enumerador está nessa posição, as chamadas subsequentes para MoveNext também retornam false. Caso a última chamada para MoveNext tenha retornado false, Current está indefinido. Não é possível definir Current como o primeiro elemento da coleção novamente; você deve criar uma nova instância de enumerador em vez disso.

Um enumerador permanece válido desde que a coleção permaneça inalterada. Se forem feitas alterações na coleção, como adicionar, modificar ou excluir elementos, o enumerador será invalidado irrecuperavelmente e a próxima chamada para MoveNext ou IEnumerator.Reset gerará um InvalidOperationException.

O enumerador não tem acesso exclusivo à coleção; por isso, a enumeração por meio de uma coleção não é um procedimento thread-safe intrínseco. Para garantir acesso thread-safe durante a enumeração, é possível bloquear a coleção durante toda a enumeração. Para permitir que a coleção seja acessada por vários threads para leitura e gravação, você deve implementar sua própria sincronização.

As implementações padrão de coleções em System.Collections.Generic não são sincronizadas.

Propriedades

Current

Obtém o elemento na posição atual do enumerador.

Métodos

Dispose()

Libera todos os recursos usados pelo Dictionary<TKey,TValue>.ValueCollection.Enumerator.

MoveNext()

Avança o enumerador para o próximo elemento do Dictionary<TKey,TValue>.ValueCollection.

Implantações explícitas de interface

IEnumerator.Current

Obtém o elemento na posição atual do enumerador.

IEnumerator.Reset()

Define o enumerador com sua posição inicial, que é antes do primeiro elemento da coleção.

Aplica-se a

Confira também