Collection.IEnumerable.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.
Obtém um enumerador que itera por meio da coleção.
virtual System::Collections::IEnumerator ^ ICollectionGetEnumerator() = System::Collections::IEnumerable::GetEnumerator;
System.Collections.IEnumerator IEnumerable.GetEnumerator();
abstract member ICollectionGetEnumerator : unit -> System.Collections.IEnumerator
override this.ICollectionGetEnumerator : unit -> System.Collections.IEnumerator
Function ICollectionGetEnumerator () As IEnumerator Implements IEnumerable.GetEnumerator
Retornos
Um IEnumerator objeto que pode ser usado para iterar por meio da coleção.
Comentários
A foreach instrução da linguagem C# (for each no 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.
Inicialmente, o enumerador é posicionado antes do primeiro elemento da coleção. O Reset método também traz o enumerador de volta para essa posição. Nessa posição, a Current propriedade é indefinida. Portanto, você 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.
Current retorna o mesmo objeto até ou MoveNextReset é 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 também retornar false. Se a última chamada a ser MoveNext retornada false, Current será indefinida. Para definir Current como o primeiro elemento da coleção novamente, você pode chamar Reset seguido por MoveNext.
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 seu comportamento será indefinido.
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.