Exporter (0) Imprimer
Développer tout

Itérateurs (Guide de programmation C#)

Les itérateurs sont une nouvelle fonctionnalité en C# 2.0. Un itérateur est une méthode, un accesseur ou un opérateur get qui vous permet de prendre en charge l'itération foreach dans une classe ou unstruct sans devoir implémenter l'interface IEnumerable dans son intégralité. Il vous suffit plutôt de fournir un itérateur qui parcourt simplement les structures de données dans votre classe. Lorsque le compilateur détecte votre itérateur, il génère automatiquement les méthodes Current, MoveNext et Dispose de l'interface IEnumerable ou IEnumerable<T>.

Vue d'ensemble des itérateurs

  • Un itérateur est une section de code qui retourne une séquence ordonnée de valeurs du même type.

  • Un itérateur peut être utilisé comme corps d'une méthode, d'un opérateur ou d'un accesseur get.

  • Le code d'itérateur utilise l'instruction yield return pour retourner successivement chaque élément. yield break met fin à l'itération. Pour plus d'informations, consultez yield.

  • Plusieurs itérateurs peuvent être implémentés sur une classe. Chaque itérateur doit avoir un nom unique, comme n'importe quel membre de classe ; il peut être appelé par le code client dans une instruction foreach comme suit : foreach(int x in SampleClass.Iterator2){}

  • Le type de retour d'un itérateur doit être IEnumerable, IEnumerator, IEnumerable<T> ou IEnumerator<T>.

Le mot clé yield est utilisé pour spécifier la valeur ou les valeurs retournées. Lorsque l'instruction yield return est atteinte, l'emplacement actuel est stocké. L'exécution redémarrera de cet emplacement la prochaine fois que l'itérateur sera appelé.

Les itérateurs sont particulièrement utiles avec les classes de collection, offrant un moyen pratique d'itérer des structures de données non triviales comme les arbres binaires.

Rubriques connexes

Exemple

Dans cet exemple, la classe DaysOfTheWeek est une classe de collection simple qui stocke les jours de la semaine comme des chaînes. Après chaque itération d'une boucle foreach, la chaîne suivante de la collection est retournée.

public class DaysOfTheWeek : System.Collections.IEnumerable
{
    string[] m_Days = { "Sun", "Mon", "Tue", "Wed", "Thr", "Fri", "Sat" };

    public System.Collections.IEnumerator GetEnumerator()
    {
        for (int i = 0; i < m_Days.Length; i++)
        {
            yield return m_Days[i];
        }
    }
}

class TestDaysOfTheWeek
{
    static void Main()
    {
        // Create an instance of the collection class
        DaysOfTheWeek week = new DaysOfTheWeek();

        // Iterate with foreach
        foreach (string day in week)
        {
            System.Console.Write(day + " ");
        }
    }
}

Sortie

 
Sun Mon Tue Wed Thr Fri Sat

Spécification du langage C#

Pour plus d'informations, consultez les sections suivantes dans Spécifications du langage C#.

  • 22 Itérateurs

Voir aussi

Ajouts de la communauté

AJOUTER
Microsoft réalise une enquête en ligne pour recueillir votre opinion sur le site Web de MSDN. Si vous choisissez d’y participer, cette enquête en ligne vous sera présentée lorsque vous quitterez le site Web de MSDN.

Si vous souhaitez y participer,
Afficher:
© 2015 Microsoft