5
在C#中,为什么匿名方法不能包含yield语句?
我认为做这样的事情会很好(用lambda进行收益回报): 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(); } 但是,我发现我不能在匿名方法中使用yield。我想知道为什么。该产量的文档只是说,这是不允许的。 由于不允许使用,我只创建了List并将项目添加到其中。