Esta documentación está archivada y no tiene mantenimiento.

IEnumerator.MoveNext (Método)

Desplaza el enumerador al siguiente elemento de la colección.

Espacio de nombres: System.Collections
Ensamblado: mscorlib (en mscorlib.dll)

bool MoveNext ()
boolean MoveNext ()
function MoveNext () : boolean

Valor devuelto

true si el enumerador avanzó con éxito hasta el siguiente elemento; false si el enumerador alcanzó el final de la colección.

Tipo de excepciónCondición

InvalidOperationException

La colección se modificó después de crear el enumerador.

Después de crear un enumerador o de llamar al método Reset, el enumerador se coloca delante del primer elemento de la colección y la primera llamada al método MoveNext lo desplaza por encima del primer elemento de la colección.

Si MoveNext pasa el final de la colección, el enumerador se coloca detrás del último elemento de la colección y MoveNext devuelve el valor false. Cuando el enumerador está en esta posición, las llamadas posteriores al método MoveNext también devuelven el valor false hasta que se llama a Reset.

Mientras no se modifique la colección, el enumerador continúa siendo válido. Si se realizan cambios en la colección, como agregar, modificar o eliminar elementos, el enumerador se invalida definitivamente y la siguiente llamada a MoveNext o a Reset produce una excepción InvalidOperationException.

En el ejemplo de código siguiente se muestra la implementación de las interfaces IEnumerator para una colección personalizada. En este ejemplo, no se llama explícitamente a MoveNext, pero se implementa para admitir el uso de foreach (for each en Visual Basic). Este ejemplo de código forma parte de un ejemplo más extenso de la interfaz 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;
    }

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

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium, Windows Mobile para Pocket PC, Windows Mobile para Smartphone, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter Edition

.NET Framework no admite todas las versiones de cada plataforma. Para obtener una lista de las versiones admitidas, vea Requisitos del sistema.

.NET Framework

Compatible con: 2.0, 1.1, 1.0

.NET Compact Framework

Compatible con: 2.0, 1.0
Mostrar: