SortedList<TKey,TValue>.GetEnumerator Método

Definição

Retorna um enumerador que itera por meio do SortedList<TKey,TValue>.

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

Retornos

IEnumerator<KeyValuePair<TKey,TValue>>

Um IEnumerator<T> tipo KeyValuePair<TKey,TValue> para o SortedList<TKey,TValue>.

Implementações

Comentários

A instrução foreach da linguagem C# (For Each em Visual Basic) oculta a complexidade dos enumeradores. Portanto, o uso 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.

O dicionário é mantido em uma ordem classificada usando uma árvore interna. Cada novo elemento é posicionado na posição de classificação correta e a árvore é ajustada para manter a ordem de classificação sempre que um elemento é removido. Durante a enumeração, a ordem de classificação é mantida.

Inicialmente, o enumerador é posicionado antes do primeiro elemento da coleção. Nessa posição, Current é indefinido. Portanto, 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 ser chamado. MoveNext define Current para o próximo elemento.

Se MoveNext passar o final da coleção, o enumerador será posicionado após o último elemento na coleção e MoveNext retornará false. Quando o enumerador está nessa posição, chamadas subsequentes para MoveNext retornar false. Se a última chamada a ser MoveNext retornada false, Current será indefinida. Você não pode definir Current como o primeiro elemento da coleção novamente; você deve criar uma nova instância de enumerador.

Um enumerador permanece válido enquanto a coleção permanecer 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 Reset gerará um InvalidOperationException.

O enumerador não tem acesso exclusivo à coleção; portanto, enumerar por meio de uma coleção não é intrinsecamente um procedimento thread-safe. Para garantir a segurança do thread durante a enumeração, você pode 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.

Esse método é uma operação O(1).

Aplica-se a

Confira também