24

ラムダ式が C# に追加された信じられないほど強力な機能であることを読んだことがありますが、私はそれらに当惑していることに気づきました。どうすれば私の生活を改善したり、私のコードを改善したりできるでしょうか? そのような表現を学ぶための良いリソースを誰か指摘できますか?

それらは非常にクールに見えますが、asp.net 開発者としての私の日常生活とどのように関連しているのでしょうか?

編集: 例をありがとう、そして Eric White の記事へのリンクに感謝します。私はまだそれらを消化しています。1 つの簡単な質問: ラムダ式は、クエリ以外に役立ちますか? 私が見たすべての例は、クエリ構造です。

4

3 に答える 3

12

: クエリ以外に役立つラムダ式です

Lamba 式は、関数を「インライン」で記述する便利な方法に他なりません。

したがって、これらは、別の関数であるかのように呼び出すことができるが、実際には呼び出し元の内部に記述されているコードが必要な場合に役立ちます。(関連するコードをファイル内の同じ場所に保持することに加えて、これにより、可変スコープで楽しいゲームをプレイすることもできます。参照については、「クロージャ」を参照してください。)

クエリに関連しないラムバの使用例として、ThreadPool.QueueUserWorkItem で開始する非同期処理を実行するコードが挙げられます。重要な点は、これを匿名デリゲート (C#2 の紹介) を使用して記述したり、単純な個別のクラス メンバー関数を使用して記述したりすることもできるということです。

このhttp://blogs.msdn.com/jomo_fisher/archive/2005/09/13/464884.aspxは、これらすべてのことを順を追って説明した素晴らしい入門書であり、役に立つかもしれません。

于 2008-08-24T22:45:01.210 に答える
7

ラムダは関数型プログラミングを C# にもたらします。これらは、他の特定の関数に値として渡すことができる無名関数です。LINQ で最も使用されます。

これは不自然な例です:

List<int> myInts = GetAll();
IEnumerable<int> evenNumbers = myInts.Where(x => x % 2 == 0);

ラムダのevenNumbersを介してforeachするとき

x=> x % 2 == 0

次に、フィルタとして myInts に適用されます。

これらは、多数のネストされた IF 条件とループを持つ複雑なアルゴリズムの可読性を高めるのに非常に役立ちます。

于 2008-08-24T21:58:42.260 に答える
5

以下は、ラムダを使ってできるクールなことの簡単な例です。

List<int> myList = new List<int>{ 1, 2, 3, 4, 5, 6, 7, 8, 9 };
myList.RemoveAll(x => x > 5);
//myList now == {1,2,3,4,5}

RemoveAll メソッドは述語 (引数を取り、bool を返すデリゲート) を取り、それに一致するものはすべて削除されます。ラムダ式を使用すると、実際に述語を宣言するよりも簡単になります。

于 2008-08-24T22:07:58.150 に答える