這篇文章主要介紹“怎么用Lambda簡化C#編程”,在日常操作中,相信很多人在怎么用Lambda簡化C#編程問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么用Lambda簡化C#編程”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!
創(chuàng)新互聯(lián)不只是一家網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司;我們對營銷、技術(shù)、服務(wù)都有自己獨(dú)特見解,公司采取“創(chuàng)意+綜合+營銷”一體化的方式為您提供更專業(yè)的服務(wù)!我們經(jīng)歷的每一步也許不一定是最完美的,但每一步都有值得深思的意義。我們珍視每一份信任,關(guān)注我們的網(wǎng)站設(shè)計(jì)、做網(wǎng)站質(zhì)量和服務(wù)品質(zhì),在得到用戶滿意的同時(shí),也能得到同行業(yè)的專業(yè)認(rèn)可,能夠?yàn)樾袠I(yè)創(chuàng)新發(fā)展助力。未來將繼續(xù)專注于技術(shù)創(chuàng)新,服務(wù)升級,滿足企業(yè)一站式全網(wǎng)整合營銷推廣需求,讓再小的品牌網(wǎng)站制作也能產(chǎn)生價(jià)值!
1、Lambda表達(dá)式是與委托緊密聯(lián)系的。只要有委托參數(shù)類型的地方,就可以使用Lambda表達(dá)式。
Lambda表達(dá)式的運(yùn)算符是=>。運(yùn)算符左邊列舉出了需要的參數(shù),右邊定義了賦予Lambda變量的方法的實(shí)現(xiàn)代碼。下面這段代碼是一個(gè)最簡單的使用方法
public class MyLambda{ public void disPlay() { string mid = ",middle part,"; Funclambda = param => { param += mid; param += "and this was added to the string"; return param; }; Console.WriteLine (lambda("Start of string")); }}
Func
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)用委托是就直接把字符串輸出了:
FunconeParam = s => { return String.Format("Change To UpperCase {0}", s.ToUpper ()); }; Console.WriteLine( oneParam("abc"));
注:Func
如果委托有多個(gè)參數(shù),就要把參數(shù)放到括號中,如下:
FunctwoParam = (x, y) => { return x * y; };
3、單行代碼和多行代碼
如果Lambda表達(dá)式只有一條語句,在方法塊內(nèi)就不需要花括號和return語句了,編譯器會(huì)自動(dòng)添加一條隱式的return語句。如上邊的兩個(gè)表達(dá)式可以分別表示為:
FunconeParam = s => String.Format ("Change To UpperCase {0}", s.ToUpper());Func twoParam = (x, y) => x * y;
但是如果Lambda表達(dá)式實(shí)現(xiàn)代碼需要多條語句時(shí),就必須添加花括號和return語句了。如***個(gè)例子的代碼。
4、Lambda表達(dá)式的外部變量
Lambda表達(dá)式可以使用外部變量。但使用時(shí)應(yīng)該注意些問題:
先看下邊的代碼:
int someVar = 5;Funcf = x => x + someVar;someVar = 10;Console.WriteLine(f(5));
輸出應(yīng)該是x+5還是x+10呢?運(yùn)行下發(fā)現(xiàn)輸出15(x+10).即修改外部變量someVar后,會(huì)使用外部變量的新值。
對于表達(dá)式x => x + someVar; 編譯器會(huì)創(chuàng)建一個(gè)匿名類,他有一個(gè)構(gòu)造函數(shù)來傳遞外部變量。該構(gòu)造函數(shù)取決于從外部傳遞過來的變量個(gè)數(shù)。對于上邊這個(gè)例子,我們可以認(rèn)為構(gòu)造函數(shù)接受一個(gè)int,匿名類包含了一個(gè)匿名方法,其實(shí)現(xiàn)代碼和返回類型有l(wèi)ambda表達(dá)式定義:
public class AnonymousClass{ private int someVar; public AnonymousClass(int someVar) { this.someVar = someVar; } public int AnonymousMethod(int x) { return x + someVar; }}
使用Lambda表達(dá)式時(shí),調(diào)用該方法(AnonymousMethod(int x)),會(huì)創(chuàng)建匿名類的一個(gè)實(shí)例(相當(dāng)于new AnonymousClass(somevar)),并傳遞調(diào)用該方法時(shí)的變量的值。
到此,關(guān)于“怎么用Lambda簡化C#編程”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!