Warum kann eine anonyme Methode in C # keine yield-Anweisung enthalten?

Ich dachte, es wäre schön, so etwas zu tun (mit der lambda zu tun eine Rendite):

public IList<T> Find<T>(Expression<Func<T, bool>> expression) where T : class, new()
{
    IList<T> list = GetList<T>();
    var fun = expression.Compile();

    var items = () => {
        foreach (var item in list)
            if (fun.Invoke(item))
                yield return item; //This is not allowed by C#
    }

    return items.ToList();
}

Allerdings fand ich heraus, dass ich nicht verwenden können, die Ausbeute in der anonymen Methode. Ich Frage mich, warum. Die Ausbeute docs nur sagen, es ist nicht erlaubt.

Da war es nicht erlaubt ich gerade erstellten Liste Hinzugefügt und die Elemente.

InformationsquelleAutor der Frage Lance Fisher | 2009-08-01

Schreibe einen Kommentar