C# 3.0 極簡風 - Lambda Expression
9 |
Lambda Expression是C# 3.0的新特性之一,對我來說,它跟自動實作屬性一樣,明明已看過不少文章,卻還不太明白它怎麼來的跟想做什麼。(開始有點懷疑自己是否其實資質駑鈍,一路是靠勤能補拙才混到今天,難怪老覺得睡覺時間不夠)
花了點時間研究,算是比較理解Lambda Expression的優點,寫成以下的例子,希望有突顯出Lambda Expression語法的簡潔之處:
using System;
using System.Linq;
public class CSharpLab
{
//宣告一個delegate, 自訂a, b二數運算的邏輯
delegate int myLogic(int a, int b);
public static void Test()
{
int x=3, y=5;
//原本的標準delegate寫法, 要額外宣告一個Method
calc(x, y, new myLogic(addMethod));
//省事一點的匿名寫法
calc(x, y, delegate(int a, int b) { return a+b; });
//再省下去,就來段黏巴達(Lambada)Lambda吧
calc(x, y, (a,b)=>a+b);
calc(x, y, (a,b)=>a-b);
calc(x, y, (a,b)=>a*b);
}
static void calc(int x, int y, myLogic cc)
{
Console.WriteLine(cc(x, y));
}
static int addMethod(int a, int b) {
return a+b;
}
}
Comments
# by Rex Tang
原來如此~~
# by huge
這算是syntatic sugar嗎?
# by kennyshu
小弟覺得lambda最好用的地方可能是在LINQ,很多時候comprehension query 無法輕易達成的地方可以靠 lambda query 輕易解決喔! 個人意見~
# by Harry
搞懂了 感謝分享~
# by Phl
版主您過謙了.
# by Adam
因為不是資訊本科純粹自己愛寫程式,所以老是要上網查東查西,網上資料雖多,但個人覺得有品質的很少...而版主就是少數很有品質的...而且寫得連我們這些門外漢都看得懂,真是佛心來的...(OS:莫非版主是平民詩人白居易轉世...)
# by Jeffrey
to Adam, 呵,過獎了。(偷偷說)其實,我也不是資訊科系出身,說不定因為如此,常不小心用門外漢的語言跟角度來說明自己的學習心得,反而意外跟大家產生共鳴。kero kero kero...
# by Novice
哇cow~一下子就從這例子知道delegate標準寫法、匿名寫法和Lambda Expression用法... 感謝神之版主
# by Bee
Adam所言甚是, 我看過很多Lambda Expression的解釋文章, 最好的是版主這一個, 最重要的是讓門外漢易於理解, 而且簡潔