質問
この質問にはすでに回答があります:
Lambda ExpressionsはC#に非常に強力な追加機能であると読んだことがありますが、Lambda Expressionsに不思議に思っています。どうすれば私の生活を改善したり、コードを改善したりできますか?誰でもそのような表現を学ぶための優れたリソースを指摘できますか?
それらは地獄のようにクールに見えますが、asp.net開発者としての日々の生活とどのように関係していますか?
編集:例に感謝し、エリック・ホワイトの記事へのリンクに感謝します。私は今でもそれらを消化しています。 1つの簡単な質問:ラムダ式はクエリ以外の何かに役立ちますか?私が見たすべての例は、クエリ構造です。
解決
:クエリ以外の何かに役立つラムダ式です
Lamba式は、関数を「インライン」で記述する便利な方法にすぎません。
これらは、別の関数であるかのように呼び出すことができるが、実際にはその呼び出し元の内部で記述された、少しのコードが必要な場所で役立ちます。 (ファイル内の同じ場所に関連するコードを保持することに加えて、これにより変数スコープで楽しいゲームをプレイすることもできます-参照については「クロージャ」を参照してください。)
ランバのクエリに関連しない使用の例としては、ThreadPool.QueueUserWorkItemから開始する非同期的に何かを行うコードがあります。重要な点は、匿名のデリゲート(C#2の紹介)を使用して、または単純な別個のクラスメンバー関数を使用してこれを記述できることです。
この http://blogs.msdn.com/jomo_fisher /archive/2005/09/13/464884.aspx は、これらすべての詳細なステップバイステップの紹介であり、役立つかもしれません。
他のヒント
ラムダはC#に機能的なプログラミングをもたらします。 これらは、他の特定の関数に値として渡すことができる匿名関数です。 LINQで最もよく使用されます。
不自然な例:
List<int> myInts = GetAll();
IEnumerable<int> evenNumbers = myInts.Where(x => x % 2 == 0);
今、偶数番号のラムダをforeachするとき
x=> x % 2 == 0
次にmyIntsにフィルターとして適用されます。
これらは、多くのネストされたIF条件とループを持つ複雑なアルゴリズムの可読性を高めるのに非常に役立ちます。
ラムダでできることの簡単な例を次に示します。
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メソッドは、述語(引数を取りブール値を返すデリゲート)を取り、一致するものはすべて削除されます。ラムダ式を使用すると、実際に述部を宣言するよりも簡単になります。