Questions tagged «yield-return»

16
正确使用“收益率”
Н 堆栈溢出русском:产量? 该产量关键字是其中的一个关键字,在C#是继续迷惑我,而且我正确使用它,我从来没有自信。 在以下两段代码中,哪个是首选,为什么? 版本1:使用收益回报 public static IEnumerable<Product> GetAllProducts() { using (AdventureWorksEntities db = new AdventureWorksEntities()) { var products = from product in db.Product select product; foreach (Product product in products) { yield return product; } } } 版本2:返回列表 public static IEnumerable<Product> GetAllProducts() { using (AdventureWorksEntities db = new AdventureWorksEntities()) …
903 c#  yield-return 

6
立即退还所有可枚举的收益;没有循环
我具有以下功能来获取卡的验证错误。我的问题与处理GetErrors有关。两种方法具有相同的返回类型IEnumerable<ErrorInfo>。 private static IEnumerable<ErrorInfo> GetErrors(Card card) { var errors = GetMoreErrors(card); foreach (var e in errors) yield return e; // further yield returns for more validation errors } 是否可以返回所有错误GetMoreErrors而不必通过错误进行枚举? 考虑一下这可能是一个愚蠢的问题,但是我想确保自己没有错。


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并将项目添加到其中。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.