SortedDictionary<TKey,TValue>.KeyCollection.IEnumerable<TKey>.GetEnumerator Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Retorna um enumerador que itera pela coleção.
virtual System::Collections::Generic::IEnumerator<TKey> ^ System.Collections.Generic.IEnumerable<TKey>.GetEnumerator() = System::Collections::Generic::IEnumerable<TKey>::GetEnumerator;
System.Collections.Generic.IEnumerator<TKey> IEnumerable<TKey>.GetEnumerator ();
abstract member System.Collections.Generic.IEnumerable<TKey>.GetEnumerator : unit -> System.Collections.Generic.IEnumerator<'Key>
override this.System.Collections.Generic.IEnumerable<TKey>.GetEnumerator : unit -> System.Collections.Generic.IEnumerator<'Key>
Function GetEnumerator () As IEnumerator(Of TKey) Implements IEnumerable(Of TKey).GetEnumerator
Retornos
Um IEnumerator<T> que pode ser usado para iterar pela coleção.
Implementações
Comentários
A instrução foreach
da linguagem C# (for each
no C++, For Each
no Visual Basic) oculta a complexidade dos 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. 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 objeto até MoveNext ser chamada. MoveNext define Current como 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 estiver nessa posição, as chamadas subsequentes para MoveNext também retornarão 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 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 no namespace System.Collections.Generic não são sincronizadas.
Esse método é uma operação O(log n) em que n é um número de elementos em uma coleção.