IEnumerator.MoveNext Metodo

Definizione

Sposta l'enumeratore all'elemento successivo della raccolta.

C#
public bool MoveNext ();

Restituisce

true se l'enumeratore è stato spostato correttamente in avanti in corrispondenza dell'elemento successivo, false se l'enumeratore ha superato la fine della raccolta.

Eccezioni

La raccolta è stata modificata dopo la creazione dell'enumeratore.

Esempio

Nell'esempio di codice seguente viene illustrata l'implementazione delle IEnumerator interfacce per una raccolta personalizzata. In questo esempio non MoveNext viene chiamato in modo esplicito, ma viene implementato per supportare l'uso di foreach (for each in Visual Basic). Questo esempio di codice fa parte di un esempio più grande per l'interfaccia IEnumerator .

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();
            }
        }
    }
}

Commenti

Dopo aver creato un enumeratore o una volta chiamato il Reset metodo, un enumeratore viene posizionato prima del primo elemento della raccolta e la prima chiamata al MoveNext metodo sposta l'enumeratore sul primo elemento della raccolta.

Se MoveNext passa la fine della raccolta, l'enumeratore viene posizionato dopo l'ultimo elemento della raccolta e MoveNext restituisce false. Quando l'enumeratore si trova in questa posizione, le chiamate successive per restituire false anche fino a MoveNext quando Reset non viene chiamato.

Se le modifiche vengono apportate alla raccolta, ad esempio l'aggiunta, la modifica o l'eliminazione di elementi, il comportamento di MoveNext è indefinito.

Si applica a

Prodotto Versioni
.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

Vedi anche