L’opérateur yield

Exemple d'utilisation et explications : http://www.ytechie.com/2009/02/using-c-yield-for-readability-and-performance/

On peut le comparer au streaming vidéo : plutôt que de devoir télécharger toute une vidéo avant de la lire, on peut la regarder au fur et à mesure qu'on la télécharge. Et si on arrête de la regarder pas besoin de télécharger la fin de la vidéo.

IList<string> FindBobs(IEnumerable<string> names)
{
    var bobs = new List<string>();

    foreach(var currName in names)
    {
        if(currName == "Bob")
            bobs.Add(currName);
    }

    return bobs;
}

devient :

IEnumerable<string> FindBobs(IEnumerable<string> names)
{
    foreach(var currName in names)
    {
        if(currName == "Bob")
            yield return currName;
    }
}