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用法... 感謝神之版主

Post a comment


84 + 10 =