Cet article a fait l’objet d’une traduction automatique. Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez également afficher le texte anglais dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte traduit.
Traduction
Anglais

IEnumerator.Reset méthode ()

 

Date de publication : novembre 2016

Rétablit l’énumérateur à sa position initiale, qui précède le premier élément de la collection.

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

void Reset()

Exception Condition
InvalidOperationException

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

Un énumérateur est valide tant que la collection demeure inchangée. Si des changements sont faits à la collection, telles que l’ajout, modification ou suppression d’éléments, l’énumérateur est définitivement invalidé et l’appel suivant à la MoveNext ou Reset méthode lève un InvalidOperationException.

Le Reset méthode est fournie pour l’interopérabilité COM. Il ne pas nécessairement être implémentée ; au lieu de cela, l’implémenteur peut simplement lever un NotSupportedException.

Remarques à l’attention des implémenteurs :

Tous les appels à Reset doivent conduire au même état de l’énumérateur. L’implémentation par défaut consiste à déplacer l’énumérateur au début de la collection, avant le premier élément. Cela l’énumérateur non valide si la collection a été modifiée depuis la création de l’énumérateur, qui est cohérent avec MoveNext et Current.

L’exemple de code suivant illustre l’implémentation de la IEnumerator interfaces pour une collection personnalisée. Dans cet exemple, Reset 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 complet pour la IEnumerator interface.

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

Plateforme Windows universelle
Disponible depuis 8
.NET Framework
Disponible depuis 1.1
Bibliothèque de classes portable
Pris en charge dans : plateformes .NET portables
Silverlight
Disponible depuis 2.0
Silverlight pour Windows Phone
Disponible depuis 7.0
Windows Phone
Disponible depuis 8.1
Retour au début
Afficher: