Mot clé yield

tandelol
Mot clé yield

Bonjour à tous,

Est-ce que quelqu'un pourrait m'expliquer en deux mots à quoi sert le mot clé yield en C# ?

Nicolas

fredericmazue

yield permet de construire un itérateur. Un itérateur permet de parcourir une séquence, et dans le cas présent, la séquence n'est pas construite avant utilisation, mais au fur et à mesure des besoins. Exemple:

using System;
using System.Collections;
public class List
{
    // on suppose depart < fin :)
    public static IEnumerable NombresPas2(int debut, int fin)
    {
        for (int i = debut; i < fin; i = i + 2)
        {
            yield return i;
        }
    }

    static void Main()
    {
        // Afficher une suite de nombre ave cun pas de 2
        foreach (int i in NombresPas2(1, 10))
        {
            Console.Write("{0} ", i);
        }
        Console.WriteLine();
    }
}

Ce code va afficher 1 3 5 7 9

Les nombres sont construits à la volée, lors de l'exécution de la boucle foreach dans Main. Pour que ça soit possible, le compilateur génère tout un code pour garder le contexte d'exécution deNombresPas2, lorsqu'il rencontre le mot-clé yield, merci à lui :)