C# 3.0 極簡風 - Lambda Expression

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;
    }
}
 
歡迎推文分享:
Published 13 June 2008 10:00 AM 由 Jeffrey
Filed under:


意見

# Rex Tang said on 13 June, 2008 02:41 AM

原來如此~~

# huge said on 15 June, 2008 12:31 AM

這算是syntatic sugar嗎?

# kennyshu said on 16 July, 2008 10:13 AM

小弟覺得lambda最好用的地方可能是在LINQ,很多時候comprehension query 無法輕易達成的地方可以靠 lambda query 輕易解決喔!

個人意見~

# Harry said on 27 June, 2010 08:54 PM

搞懂了 感謝分享~

你的看法呢?

(必要的) 
(必要的) 
(選擇性的)
(必要的) 

請輸入以上的數字:

搜尋

Go

<June 2008>
SunMonTueWedThuFriSat
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345
 
RSS
【工商服務】
最新回應

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


BlogLook Score and Rank

Syndication