相关疑难解决方法(0)

在C#中,为什么匿名方法不能包含yield语句?

我认为做这样的事情会很好(lambda做一个yield return):

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();
}
Run Code Online (Sandbox Code Playgroud)

但是,我发现我不能在匿名方法中使用yield.我想知道为什么.该产量的文档只是说,这是不允许的.

由于不允许,我只创建了List并将项目添加到其中.

c# yield anonymous-methods yield-return

85
推荐指数
3
解决办法
2万
查看次数

标签 统计

anonymous-methods ×1

c# ×1

yield ×1

yield-return ×1