Ler em inglês

Compartilhar via


IEnumerator.MoveNext Método

Definição

Avança o enumerador para o próximo elemento da coleção.

C#
public bool MoveNext ();

Retornos

true se o enumerador foi avançado com êxito para o próximo elemento; false se o enumerador passou o final da coleção.

Exceções

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

Exemplos

O exemplo de código a seguir demonstra a implementação das IEnumerator interfaces para uma coleção personalizada. Neste exemplo, MoveNext 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

Depois que um enumerador é criado ou depois que o Reset método é chamado, um enumerador é posicionado antes do primeiro elemento da coleção e a primeira chamada para o MoveNext método move o enumerador sobre o primeiro elemento da coleção.

Caso MoveNext passe o final da coleção, o enumerador é posicionado após o último elemento na coleção e MoveNext retorna false. Quando o enumerador está nessa posição, chamadas subsequentes para MoveNext também retornar false até Reset que seja chamado.

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

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