HashSet<T>.Enumerator Estrutura
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.
Enumera os elementos de um HashSet<T> objeto.
public: value class HashSet<T>::Enumerator : System::Collections::Generic::IEnumerator<T>
public struct HashSet<T>.Enumerator : System.Collections.Generic.IEnumerator<T>
[System.Serializable]
public struct HashSet<T>.Enumerator : System.Collections.Generic.IEnumerator<T>
type HashSet<'T>.Enumerator = struct
interface IEnumerator<'T>
interface IEnumerator
interface IDisposable
[<System.Serializable>]
type HashSet<'T>.Enumerator = struct
interface IEnumerator<'T>
interface IDisposable
interface IEnumerator
Public Structure HashSet(Of T).Enumerator
Implements IEnumerator(Of T)
Parâmetros de Tipo Genérico
- T
- Herança
- Atributos
- Implementações
Observações
A afirmaçã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, a Current propriedade é indefinida. Portanto, 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 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 um novo objeto 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, modificar ou eliminar elementos, o enumerador fica irremediavelmente invalidado e a próxima chamada para MoveNext ou IEnumerator.Reset lança um InvalidOperationException.
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 no System.Collections.Generic namespace não estão sincronizadas.
Propriedades
| Name | Description |
|---|---|
| Current |
Obtém o elemento na posição atual do enumerador. |
Métodos
| Name | Description |
|---|---|
| Dispose() |
Liberta todos os recursos usados por um HashSet<T>.Enumerator objeto. |
| MoveNext() |
Avança o enumerador para o próximo elemento da HashSet<T> coleção. |
Implementações de Interface Explícita
| Name | Description |
|---|---|
| IEnumerator.Current |
Obtém o elemento na posição atual do enumerador. |
| IEnumerator.Reset() |
Define o enumerador para a sua posição inicial, que é antes do primeiro elemento da coleção. |