PropertyCollection.IEnumerable.GetEnumerator Método

Definição

Retorna um objeto IEnumerable.Returns an IEnumerable object.

 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

Um IEnumerable.object.An IEnumerable.object.

Implementações

Comentários

[Visual Basic, C#][Visual Basic, C#]

A instrução foreach da C# linguagem (for each em Visual Basic) oculta a complexidade dos enumeradores.The foreach statement of the C# language (for each in Visual Basic) hides the complexity of the enumerators. Portanto, o uso de foreach é recomendado em vez de manipular diretamente o enumerador.Therefore, using foreach is recommended instead of directly manipulating the enumerator.

Os enumeradores podem ser usados para ler os dados na coleção, mas não podem ser usados para modificar a coleção subjacente.Enumerators can be used to read the data in the collection, but they cannot be used to modify the underlying collection.

Inicialmente, o enumerador é posicionado antes do primeiro elemento da coleção.Initially, the enumerator is positioned before the first element in the collection. Reset também traz o enumerador de volta para essa posição.Reset also brings the enumerator back to this position. Nessa posição, a propriedade Current é indefinida.At this position, the Current property is undefined. Por isso, você deve chamar MoveNext para avançar o enumerador até o primeiro elemento da coleção antes de ler o valor de Current.Therefore, you must call MoveNext to advance the enumerator to the first element of the collection before reading the value of Current.

Current retorna o mesmo objeto até MoveNext ou Reset ser chamado.Current returns the same object until either MoveNext or Reset is called. MoveNext define Current como o próximo elemento.MoveNext sets Current to the next element.

Caso MoveNext passe o final da coleção, o enumerador é posicionado após o último elemento na coleção e MoveNext retorna false.If MoveNext passes the end of the collection, the enumerator is positioned after the last element in the collection and MoveNext returns false. Quando o enumerador está nessa posição, as chamadas subsequentes para MoveNext também retornam false.When the enumerator is at this position, subsequent calls to MoveNext also return false. Caso a última chamada para MoveNext tenha retornado false, Current está indefinido.If the last call to MoveNext returned false, Current is undefined. Para definir Current como o primeiro elemento da coleção novamente, é possível chamar Reset seguido de MoveNext.To set Current to the first element of the collection again, you can call Reset followed by MoveNext.

Um enumerador permanece válido desde que a coleção permaneça inalterada.An enumerator remains valid as long as the collection remains unchanged. Se forem feitas alterações na coleção, como adicionar, modificar ou excluir elementos, o enumerador será invalidado de maneira irrevogável e seu comportamento permanecerá indefinido.If changes are made to the collection, such as adding, modifying, or deleting elements, the enumerator is irrecoverably invalidated and its behavior is undefined.

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.The enumerator does not have exclusive access to the collection; therefore, enumerating through a collection is intrinsically not a thread-safe procedure. Para garantir acesso thread-safe durante a enumeração, é possível bloquear a coleção durante toda a enumeração.To guarantee thread safety during enumeration, you can lock the collection during the entire enumeration. 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.To allow the collection to be accessed by multiple threads for reading and writing, you must implement your own synchronization.

Aplica-se a

Veja também