ラムダス

少し前に、ラムダについて学びましたが、ラムダを使用して式を構築する原理を十分に理解していませんでした。 しかし、今日、私はチャーリー・カルバートのポストに出会い、自分のためにすべてを明確にしました。



例を考えてみましょう:

Func< int , int , int > myLambda = (a, b) => (a + b);



* This source code was highlighted with Source Code Highlighter .






このエントリは、次のコードブロックと同等です。

public static int Add( int a, int b)

{

return a + b;

}



Func< int , int , int > myDelegate = Add;




* This source code was highlighted with Source Code Highlighter .






式の左側の部分が同一であることに気付くかもしれません:

Func< int , int , int > myLambda = (a, b) => (a + b);

Func< int , int , int > myDelegate = Add;



* This source code was highlighted with Source Code Highlighter .






さて、今、適切な部分をよく見ると、1つの機能に気付くことができます。

式の正しい部分を比較します:(a、b)およびAdd。 括弧内に、Addメソッドの引数を示し、(a + b)はAddメソッドの本体です。

つまり、単純な場合、ラムダ「=>」の右側にあるのはメソッドの引数であり、ラムダの後はメソッドの本体です。



引数のないメソッドを想像することもできます:

public static void UseLocal()

{

int n;

Func< int > func = () => { n = 6; return n; };

n = func();

Console .WriteLine(n); // Outputs the number 6

}



* This source code was highlighted with Source Code Highlighter .








まあ、おそらく、それをすべて発音する方法を知らない人のために:(a、b)=> a + bは「a and b go a a plus b」と読みます。



この啓発の後、すべてが明確になりました。ラムダ式を作成する際に例をもう見ないことを望みます:)



そして、ここにソース自体があります: blogs.msdn.com/charlie/archive/2008/06/28/lambdas.aspx



UPD: ここでは、クロージャと発生する問題について読むことができます



All Articles