Ler em inglês

Partilhar via


IEnumerator.Reset Método

Definição

Define o enumerador com sua posição inicial, que é antes do primeiro elemento da coleção.

C#
public void Reset ();

Exceções

A coleção foi modificada depois da criação do enumerador.

O enumerador não dá suporte à redefinição.

Exemplos

O exemplo de código a seguir demonstra a implementação das IEnumerator interfaces para uma coleção personalizada. Neste exemplo, Reset não é chamado explicitamente, mas é implementado para dar suporte ao uso de foreach (for each no Visual Basic). Este exemplo de código faz parte de um exemplo maior para a IEnumerator interface .

C#
// When you implement IEnumerable, you must also implement IEnumerator.
public class PeopleEnum : IEnumerator
{
    public Person[] _people;

    // Enumerators are positioned before the first element
    // until the first MoveNext() call.
    int position = -1;

    public PeopleEnum(Person[] list)
    {
        _people = list;
    }

    public bool MoveNext()
    {
        position++;
        return (position < _people.Length);
    }

    public void Reset()
    {
        position = -1;
    }

    object IEnumerator.Current
    {
        get
        {
            return Current;
        }
    }

    public Person Current
    {
        get
        {
            try
            {
                return _people[position];
            }
            catch (IndexOutOfRangeException)
            {
                throw new InvalidOperationException();
            }
        }
    }
}

Comentários

Se forem feitas alterações na coleção, como adicionar, modificar ou excluir elementos, o comportamento de Reset será indefinido.

O Reset método é fornecido para interoperabilidade COM. Ela não precisa necessariamente ser implementada; Em vez disso, o implementador pode simplesmente lançar um NotSupportedException.

Notas aos Implementadores

Todas as chamadas para Reset() devem resultar no mesmo estado para o enumerador. A implementação preferencial é mover o enumerador para o início da coleção, antes do primeiro elemento. Isso invalida o enumerador se a coleção tiver sido modificada desde que o enumerador foi criado, o que é consistente com MoveNext() e Current.

Aplica-se a

Produto Versões
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

Confira também