SortedDictionary<TKey,TValue>.GetEnumerator Método

Definição

Devolve um enumerador que itera através do SortedDictionary<TKey,TValue>.

public:
 System::Collections::Generic::SortedDictionary<TKey, TValue>::Enumerator GetEnumerator();
public System.Collections.Generic.SortedDictionary<TKey,TValue>.Enumerator GetEnumerator();
member this.GetEnumerator : unit -> System.Collections.Generic.SortedDictionary<'Key, 'Value>.Enumerator
Public Function GetEnumerator () As SortedDictionary(Of TKey, TValue).Enumerator

Devoluções

A SortedDictionary<TKey,TValue>.Enumerator para o SortedDictionary<TKey,TValue>.

Observações

Para efeitos de enumeração, cada item é uma KeyValuePair<TKey,TValue> estrutura que representa um valor e a sua chave.

A afirmação foreach da linguagem C# (For Each em Visual Basic) esconde a complexidade dos enumeradores. Por isso, recomenda-se o uso foreach , em vez de manipular diretamente o enumerador.

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

O dicionário é mantido numa ordem ordenada usando uma árvore interna. Cada novo elemento é posicionado na posição correta de ordenação, e a árvore é ajustada para manter a ordem de ordenação sempre que um elemento é removido. Durante a enumeração, mantém-se a ordem de ordenação.

Inicialmente, o enumerador é posicionado antes do primeiro elemento da coleção. Nesta posição, a Current propriedade é indefinida. Portanto, 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.

A Current propriedade devolve o mesmo elemento até que o MoveNext método seja chamado. MoveNext passa Current para o elemento seguinte.

Se MoveNext passar o final da coleção, o enumerador é posicionado após o último elemento da coleção e MoveNext retorna false. Quando o enumerador está nesta posição, chamadas subsequentes também MoveNext retornam false. Se a última chamada devolvida MoveNextfalse, Current for indefinida. Não pode voltar a definir Current para o primeiro elemento da coleção; deve criar uma nova instância de enumerador em vez disso.

Um enumerador mantém-se válido enquanto a coleção permanecer inalterada. Se forem feitas alterações à coleção, como adicionar, modificar ou eliminar elementos, o enumerador fica irremediavelmente invalidado e a próxima chamada para MoveNext ou IEnumerator.Reset lança um InvalidOperationException.

O enumerador não tem acesso exclusivo à coleção; Portanto, enumerar através de uma coleção não é intrinsecamente um procedimento seguro para threads. Para garantir a segurança da linha durante a enumeração, pode bloquear a coleção durante toda a enumeração. Para permitir que a coleção seja acedida por múltiplos threads para leitura e escrita, deve implementar a sua própria sincronização.

As implementações padrão das coleções no System.Collections.Generic namespace não estão sincronizadas.

Este método é uma operação O(log n), onde n é a contagem.

Aplica-se a

Ver também