最近2018中文字幕在日韩欧美国产成人片_国产日韩精品一区二区在线_在线观看成年美女黄网色视频_国产精品一区三区五区_国产精彩刺激乱对白_看黄色黄大色黄片免费_人人超碰自拍cao_国产高清av在线_亚洲精品电影av_日韩美女尤物视频网站

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
C#高級(jí)編程之Lambda表達(dá)式

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

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

  1. 它到底是什么呢?

    說明這個(gè)問題需要借助代碼,給予簡(jiǎn)單描述。代碼如下:

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

    由上面所看到的x=>{return x*x};這就是一個(gè)Lambda表達(dá)式,它其實(shí)就是一個(gè)匿名函數(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;};這就是一個(gè)匿名函數(shù)。這個(gè)事在.Net FrameWork 2.0后加入的概念。在.Net FrameWork 1.0的委托是把指針指向一個(gè)函數(shù),那么名字叫什么,阿貓阿狗都無所謂了,名字不再重要,所以在這個(gè)地方提供了匿名方法。

3.Lambda表達(dá)式是怎么來的?

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

public delegate String deleTransfer(string s);

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

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

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

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

    

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

Lambda 在基于方法的 LINQ 查詢中用作標(biāo)準(zhǔn)查詢運(yùn)算符方法(如 Where)的參數(shù)。

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

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

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

(input parameters) => expression;

    語句 lambda 與表達(dá)式 lambda 表達(dá)式類似,只是語句括在大括號(hào)中:

(input parameters) => {statement;};

更多信息查詢官方文檔。


當(dāng)前名稱:C#高級(jí)編程之Lambda表達(dá)式
本文URL:http://fisionsoft.com.cn/article/pciepp.html