Dictionary<TKey,TValue>.ValueCollection.IEnumerable<TValue>.GetEnumerator Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Devolve um enumerador que itera numa coleção.
virtual System::Collections::Generic::IEnumerator<TValue> ^ System.Collections.Generic.IEnumerable<TValue>.GetEnumerator() = System::Collections::Generic::IEnumerable<TValue>::GetEnumerator;
System.Collections.Generic.IEnumerator<TValue> IEnumerable<TValue>.GetEnumerator();
abstract member System.Collections.Generic.IEnumerable<TValue>.GetEnumerator : unit -> System.Collections.Generic.IEnumerator<'Value>
override this.System.Collections.Generic.IEnumerable<TValue>.GetEnumerator : unit -> System.Collections.Generic.IEnumerator<'Value>
Function GetEnumerator () As IEnumerator(Of TValue) Implements IEnumerable(Of TValue).GetEnumerator
Devoluções
Um IEnumerator<T> que pode ser usado para iterar pela coleção.
Implementações
Observações
A instruçã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.
Inicialmente, o enumerador é posicionado antes do primeiro elemento da coleção. Nesta posição, Current é indefinido. Portanto, deve chamar MoveNext para avançar o enumerador até ao primeiro elemento da coleção antes de ler o valor de Current.
Current devolve o mesmo objeto até MoveNext ser 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 elementos ou alterar a capacidade, o enumerador é irremediavelmente invalidado e a próxima chamada para MoveNext ou IEnumerator.Reset lança um InvalidOperationException.
.NET apenas Core 3.0+: Os únicos métodos de mutação que não invalidam os enumeradores são Remove e Clear.
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 em System.Collections.Generic não estão sincronizadas.
Este método é uma operação O(1).