Dictionary<TKey,TValue>.IEnumerable.GetEnumerator Método

Definição

Retorna um enumerador que itera pela coleção.

 virtual System::Collections::IEnumerator ^ System.Collections.IEnumerable.GetEnumerator() = System::Collections::IEnumerable::GetEnumerator;
System.Collections.IEnumerator IEnumerable.GetEnumerator ();
abstract member System.Collections.IEnumerable.GetEnumerator : unit -> System.Collections.IEnumerator
override this.System.Collections.IEnumerable.GetEnumerator : unit -> System.Collections.IEnumerator
Function GetEnumerator () As IEnumerator Implements IEnumerable.GetEnumerator

Retornos

IEnumerator

Um IEnumerator que pode ser usado para iterar pela coleção.

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. O método Reset também retorna o enumerador a essa posição. Nessa posição, a Current propriedade é indefinida. Por isso, você deve chamar o método MoveNext para avançar o enumerador até o primeiro elemento da coleção antes de ler o valor de Current.

A Current propriedade retorna o mesmo elemento até que o método ou Reset o MoveNext método 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. Para definir Current como o primeiro elemento da coleção novamente, é possível chamar Reset seguido de MoveNext.

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

.NET Core 3.0+ somente: os únicos métodos de mutação que não invalidam enumeradores são Remove e Clear.

O enumerador não tem acesso exclusivo à coleção; portanto, enumerar por meio de uma coleção não é intrinsecamente um procedimento seguro de thread. 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 no namespace System.Collections.Generic não são sincronizadas.

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

Aplica-se a

Confira também