Exporter (0) Imprimer
Développer tout

IEnumerator.MoveNext, méthode

Avance l'énumérateur à l'élément suivant de la collection.

Espace de noms : System.Collections
Assembly : mscorlib (dans mscorlib.dll)

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

Valeur de retour

true si l'énumérateur a pu avancer jusqu'à l'élément suivant ; false si l'énumérateur a dépassé la fin de la collection.

Type d'exceptionCondition

InvalidOperationException

La collection a été modifiée après la création de l'énumérateur.

Après la création d'un énumérateur ou l'appel à la méthode Reset, un énumérateur est positionné avant le premier élément de la collection et le premier appel à la méthode MoveNext déplace l'énumérateur sur le premier élément de la collection.

Si MoveNext passe la fin de la collection, l'énumérateur est placé après le dernier élément de la collection et MoveNext retourne false. Lorsque l'énumérateur est à cette position, les appels suivants à MoveNext retournent également false jusqu'à ce que Reset soit appelé.

Un énumérateur reste valide aussi longtemps que la collection demeure inchangée. Si la collection est modifiée en ajoutant, modifiant ou supprimant des éléments, l'énumérateur devient irrévocablement non valide et le prochain appel à MoveNext ou à Reset lève InvalidOperationException.

L'exemple de code suivant illustre l'implémentation des interfaces IEnumerator pour une collection personnalisée. Dans cet exemple, la méthode MoveNext n'est pas appelée explicitement, mais elle est implémentée pour prendre en charge l'utilisation de foreach (for each en Visual Basic). Cet exemple de code fait partie d'un exemple plus développé fourni pour l'interface 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 Edition, Windows Mobile pour Pocket PC, Windows Mobile pour Smartphone, Windows Server 2003, Windows XP Édition Media Center, Windows XP Professionnel Édition x64, Windows XP SP2, Windows XP Starter Edition

Le .NET Framework ne prend pas en charge toutes les versions de chaque plate-forme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise.

.NET Framework

Prise en charge dans : 2.0, 1.1, 1.0

.NET Compact Framework

Prise en charge dans : 2.0, 1.0

Ajouts de la communauté

AJOUTER
Afficher:
© 2014 Microsoft