タグ付けされた質問 「yield-return」

16
「利回り」の適切な使用
StackаэтотвопросестьответынаStack Overflowнарусском:yieldчемпользаyield? 降伏キーワードは、それらの一つであるキーワードを私に神秘を続けてC#で、私はそれを正しく使用していることを私は確信していたことがありません。 次の2つのコードのうち、どちらが推奨され、なぜですか? バージョン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ステートメントを含めることができないのはなぜですか?
私はこのようなことをするのが良いだろうと思いました(ラムダが利回りを返すことで): 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(); } しかし、無名メソッドでは利回りを使用できないことがわかりました。なぜだろう。歩留まりのドキュメントは、それが許可されていないと言います。 許可されなかったので、リストを作成して項目を追加しただけです。

10
C#でyield returnイテレータを使用する目的/利点は何ですか?
yield return x;C#メソッド内での使用について私が見たすべての例は、リスト全体を返すだけで同じ方法で実行できます。そのような場合、yield return構文を使用することとリストを返すことの利点または利点はありますか? また、yield return完全なリストを返すことができなかったシナリオの種類は何ですか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.