av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

Lambda簡(jiǎn)化C#編程學(xué)習(xí)心得

下邊是我學(xué)Lambda表達(dá)式的一點(diǎn)記錄。

1、Lambda表達(dá)式是與委托緊密聯(lián)系的。只要有委托參數(shù)類型的地方,就可以使用Lambda表達(dá)式。

Lambda表達(dá)式的運(yùn)算符是=>。運(yùn)算符左邊列舉出了需要的參數(shù),右邊定義了賦予Lambda變量的方法的實(shí)現(xiàn)代碼。下面這段代碼是一個(gè)最簡(jiǎn)單的使用方法

 
 
 
  1. public class MyLambda{    public void disPlay()      
  2. {        string mid = ",middle part,";          
  3. Func lambda = param =>              
  4. {                param += mid;                param   
  5. += "and this was added to the string";                  
  6. return param;            };        Console.WriteLine  
  7. (lambda("Start of string"));    }}  

Func是一個(gè)委托類型。包含兩個(gè)參數(shù):一個(gè)輸入的string和一個(gè)輸出的string.

parm是輸入?yún)?shù),所以他的類型可以認(rèn)為是string類型的(當(dāng)然很多地方會(huì)出現(xiàn)沒有名字的類型的)。

運(yùn)算符=>右邊表示一個(gè)方法,這個(gè)方法沒有名字。這個(gè)方法賦予了變量lambda。

在本例中,通過Console.WriteLine(lambda("Start of string"));向lambda方法傳遞參數(shù)“Start of string”.經(jīng)處理后會(huì)有這樣的輸出:

Start of string,middle part,and this was added to the string。

所以我想這樣理解:Lambda表達(dá)式表示是一個(gè)函數(shù)的另一種寫法。運(yùn)算符=>左邊是輸入,右邊是函數(shù)體。函數(shù)體需不需要返回值,由接收這個(gè)函數(shù)定義的lambda表達(dá)式的委托決定。

2、Lambda表達(dá)式的參數(shù)。

lambda表達(dá)式如果只有一個(gè)參數(shù),只寫出參數(shù)名就行了。下邊的lambda表達(dá)式使用了參數(shù)s,因?yàn)槲蓄愋投x了一個(gè)string類型。所以s的類型就是string。實(shí)現(xiàn)函數(shù)體的代碼調(diào)用了String.Format()方法返回一個(gè)字符串,在調(diào)用委托是就直接把字符串輸出了:

 
 
 
  1. Func oneParam = s =>    {        return   
  2. String.Format("Change To UpperCase {0}", s.ToUpper  
  3. ());    };  
  4. Console.WriteLine( oneParam("abc"));  

注:Func是一個(gè)系統(tǒng)定義的帶有一個(gè)輸入和一個(gè)輸出的委托。

如果委托有多個(gè)參數(shù),就要把參數(shù)放到括號(hào)中,如下:

 
 
 
  1. Func twoParam = (x, y) =>      
  2. {        return x * y;    }; 

3、單行代碼和多行代碼

如果Lambda表達(dá)式只有一條語(yǔ)句,在方法塊內(nèi)就不需要花括號(hào)和return語(yǔ)句了,編譯器會(huì)自動(dòng)添加一條隱式的return語(yǔ)句。如上邊的兩個(gè)表達(dá)式可以分別表示為:

 
 
 
  1. Func oneParam = s => String.Format  
  2. ("Change To UpperCase {0}", s.ToUpper());Func
  3. double, double> twoParam = (x, y) => x * y;  

但是如果Lambda表達(dá)式實(shí)現(xiàn)代碼需要多條語(yǔ)句時(shí),就必須添加花括號(hào)和return語(yǔ)句了。如***個(gè)例子的代碼。

4、Lambda表達(dá)式的外部變量

Lambda表達(dá)式可以使用外部變量。但使用時(shí)應(yīng)該注意些問題:

先看下邊的代碼:

 
 
 
  1. int someVar = 5;Func f = x => x +   
  2. someVar;someVar = 10;Console.WriteLine(f(5)); 

輸出應(yīng)該是x+5還是x+10呢?運(yùn)行下發(fā)現(xiàn)輸出15(x+10).即修改外部變量someVar后,會(huì)使用外部變量的新值。

對(duì)于表達(dá)式x => x + someVar; 編譯器會(huì)創(chuàng)建一個(gè)匿名類,他有一個(gè)構(gòu)造函數(shù)來(lái)傳遞外部變量。該構(gòu)造函數(shù)取決于從外部傳遞過來(lái)的變量個(gè)數(shù)。對(duì)于上邊這個(gè)例子,我們可以認(rèn)為構(gòu)造函數(shù)接受一個(gè)int,匿名類包含了一個(gè)匿名方法,其實(shí)現(xiàn)代碼和返回類型有l(wèi)ambda表達(dá)式定義:

 
 
 
  1. public class AnonymousClass{    private int someVar;      
  2. public AnonymousClass(int someVar)    {          
  3. this.someVar = someVar;    }    public int   
  4. AnonymousMethod(int x)    {        return x +   
  5. someVar;    }} 

使用Lambda表達(dá)式時(shí),調(diào)用該方法(AnonymousMethod(int x)),會(huì)創(chuàng)建匿名類的一個(gè)實(shí)例(相當(dāng)于new AnonymousClass(somevar)),并傳遞調(diào)用該方法時(shí)的變量的值。

Lambda簡(jiǎn)化C#編程學(xué)習(xí)心得就先寫到這里了,希望對(duì)大家有幫助。


網(wǎng)頁(yè)題目:Lambda簡(jiǎn)化C#編程學(xué)習(xí)心得
路徑分享:http://uogjgqi.cn/article/cdcdoie.html
掃二維碼與項(xiàng)目經(jīng)理溝通

我們?cè)谖⑿派?4小時(shí)期待你的聲音

解答本文疑問/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流