C#高級編程之Lambda表達式

    C#的Lambda表達式,如果你第一接觸這個專業(yè)術(shù)語,聽這個名字你完全不知道它是干嘛的。那問題就來了(放心不是去藍翔學挖掘機)。

創(chuàng)新互聯(lián)建站專注于黃南州網(wǎng)站建設(shè)服務及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供黃南州營銷型網(wǎng)站建設(shè),黃南州網(wǎng)站制作、黃南州網(wǎng)頁設(shè)計、黃南州網(wǎng)站官網(wǎng)定制、微信小程序服務,打造黃南州網(wǎng)絡公司原創(chuàng)品牌,更為您提供黃南州網(wǎng)站排名全網(wǎng)營銷落地服務。

  1. 它到底是什么呢?

    說明這個問題需要借助代碼,給予簡單描述。代碼如下:

    public delegate int deleArgu(int x);//委托
    //...
    //...    
    
    int y = 0;
    
    mydeleArgu=x=>{return x*x;};//這就是一個Lambda表達式。
    
    y=mydeleArgu(5);//結(jié)果y=25;

    由上面所看到的x=>{return x*x};這就是一個Lambda表達式,它其實就是一個匿名函數(shù)。那接下來的問題就出現(xiàn)了。

2.什么是匿名函數(shù)?

    我也是借用幾行代碼說明,代碼如下:

public delegate int deleArgu(int x);//委托

mydeleArgu = delegate(int x){return x*x;};
Console.WriteLine(mydeleArgu(5));//輸出為25;

    上面的代碼中mydeleArgu = delegate(int x){return x*x;};這就是一個匿名函數(shù)。這個事在.Net FrameWork 2.0后加入的概念。在.Net FrameWork 1.0的委托是把指針指向一個函數(shù),那么名字叫什么,阿貓阿狗都無所謂了,名字不再重要,所以在這個地方提供了匿名方法。

3.Lambda表達式是怎么來的?

    到了后來.Net Framework 3.5之后就更加的改進了,如下代碼:

public delegate String deleTransfer(string s);

deleTransfer =s=>s.Substring(0,1).toUpper()+s.Substring(1).toLower();//首字母大寫,其他小寫
Console.WriteLine(deleTransfer("abdDEF"));//結(jié)果"Adbef"

上面的部分就是帶一個參數(shù)的Lambda表達式。是不是感覺它就是一個匿名方法?沒錯!它就是這樣的。

我們很快就看清Lambda表達式的發(fā)展脈絡,它是委托和匿名方法過渡而來的,和匿名方法很相似。

總結(jié):(來自官方文檔)

    

    => 運算符具有與賦值運算符 (=) 相同的優(yōu)先級并且是右結(jié)合運算(參見“運算符”文章的“結(jié)合性”部分)。

Lambda 在基于方法的 LINQ 查詢中用作標準查詢運算符方法(如 Where)的參數(shù)。

使用基于方法的語法在 Enumerable 類中調(diào)用 Where 方法時(如在 LINQ to Objects 和 LINQ to XML 中一樣),參數(shù)是委托類型 System.Func<T, TResult>。 使用 Lambda 表達式創(chuàng)建該委托最為方便。 例如,當你在 System.Linq.Queryable 類中調(diào)用相同的方法時(如在 LINQ to SQL 中一樣),參數(shù)類型為System.Linq.Expressions.Expression<Func>,其中 Func 是最多具有十六個輸入?yún)?shù)的任何一個 Func 委托。 同樣,Lambda 表達式只是一種非常簡潔的構(gòu)造該表達式目錄樹的方式。 盡管事實上通過 Lambda 創(chuàng)建的對象具有不同的類型,但 Lambda 使得 Where 調(diào)用看起來類似。

在上一個示例中,請注意委托簽名具有一個 int 類型的隱式類型輸入?yún)?shù),并返回 int。 可以將 Lambda 表達式轉(zhuǎn)換為該類型的委托,因為該表達式也具有一個輸入?yún)?shù) (x),以及一個編譯器可隱式轉(zhuǎn)換為 int 類型的返回值。(以下幾節(jié)中將對類型推理進行詳細討論。)使用輸入?yún)?shù) 5 調(diào)用委托時,它將返回結(jié)果 25。在 is 或 as 運算符的左側(cè)不允許使用 Lambda。適用于匿名方法的所有限制也適用于 Lambda 表達式

     表達式位于 => 運算符右側(cè)的 lambda 表達式稱為“表達式 lambda”。 表達式 lambda 廣泛用于表達式樹(C# 和 Visual Basic)的構(gòu)造。 表達式 lambda 會返回表達式的結(jié)果,并采用以下基本形式:   

(input parameters) => expression;

    語句 lambda 與表達式 lambda 表達式類似,只是語句括在大括號中:

(input parameters) => {statement;};

更多信息查詢官方文檔。

本文標題:C#高級編程之Lambda表達式
本文地址:http://bm7419.com/article38/pciepp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷、品牌網(wǎng)站制作網(wǎng)站設(shè)計公司、動態(tài)網(wǎng)站網(wǎng)站設(shè)計、關(guān)鍵詞優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應式網(wǎng)站建設(shè)