Ajouter un commentaire

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 :)

Filtered HTML

Plain text

CAPTCHA
Cette question permet de vérifier que vous n'êtes pas un robot spammeur :-)
 BBBB   H  H   CCC  ZZZZZ  V     V 
B B H H C Z V V
BBBB HHHH C Z V V
B B H H C Z V V
BBBB H H CCC ZZZZZ V