前言
1、天真熱,程式設計師活著不易,星期天,也要頂著火辣辣的太陽,總結這些東西。
2、夸夸lambda吧:簡化了匿名委託的使用,讓你讓**更加簡潔,優雅。據說它是微軟自c#1.0後新增的最重要的功能之一。
lambda簡介
lambda運算子:所有的lambda表示式都是用新的lambda運算子 " => ",可以叫他,「轉到」或者 「成為」。運算子將表示式分為兩部分,左邊指定輸入引數,右邊是lambda的主體。
lambda表示式:
1.乙個引數:param=>expr
2.多個引數:(param-list)=>expr
上面這些東西,記著,下面我們開始應用並闡述lambda,讓你樂在其中。
lambda應用闡述
namespace闡述lambda
public int age
}classprogram
;persons.add(p);
}returnpersons;
}static void main(string args)
list persons =personslist();
persons= persons.where(p => p.age > 6).tolist(); //所有age>6的person的集合
person per = persons.singleordefault(p => p.age == 1); //age=1的單個people類
persons = persons.where(p => p.name.contains("兒子")).tolist(); //所有name包含兒子的person的集合
看啦上面的例子,相信你能看出它確實是個甜棗,呵呵,下面我們來看下(p=>p.age>6)這樣的表示式,到底是怎麼回事。。
首先我們看下委託
//委託 逛超市
delegate int guangchaoshi(inta);static void main(string args)
guangchaoshi gwl=jiezhang;
console.writeline(gwl(10) + ""); //列印20,委託的應用
console.readkey();
}//結賬
public static int jiezhang(inta)
elsereturn false;
console.writeline(gwl(5,5) + ""); //列印『true』,z對應引數b,p對應引數a
console.readkey();
說明:從這個例子,我們能看到,p為int型別,j為int型別,返回值為bool型別。
lambda表示式樹動態建立方法
static void main(string args)
{//i*j+w*x
parameterexpression a = expression.parameter(typeof(int),"i"); //建立乙個表示式樹中的引數,作為乙個節點,這裡是最下層的節點
parameterexpression b = expression.parameter(typeof(int),"j");
binaryexpression be= expression.multiply(a,b); //這裡i*j,生成表示式樹中的乙個節點,比上面節點高一級
parameterexpression c= expression.parameter(typeof(int), "w");
parameterexpression d= expression.parameter(typeof(int), "x");
binaryexpression be1=expression.multiply(c, d);
binaryexpression su= expression.add(be,be1); //運算兩個中級節點,產生終結點
expression> lambda = expression.lambda>(su,a,b,c,d);
console.writeline(lambda+ ""); //列印『(i,j,w,x)=>((i*j)+(w*x))』,z對應引數b,p對應引數a
func f= lambda.compile(); //將表示式樹描述的lambda表示式,編譯為可執行**,並生成該lambda表示式的委託;
console.writeline(f(1, 1, 1, 1) + ""); //列印2
console.readkey();
這段**,放上來,仔細理解下,理解透徹啦,lambda表示式基本上也沒什麼啦。呵呵。。
算啦,我還是畫個圖算是結尾吧,以便於理解。
上段**的lambda表示式樹,圖。
lambda表示式 lambda表示式
1.概述 c 11 中的 lambda 表示式用於定義並建立匿名的函式物件,以簡化程式設計工作。lambda 的語法形式如下 函式物件引數 操作符過載函式引數 mutable 或 exception 宣告 返回值型別可以看到,lambda 主要分為五個部分 函式物件引數 操作符過載函式引數 muta...
Lambda表示式和Lambda表示式樹
原版來自 linq學習筆記之二 lambda表示式和lambda表示式樹 lambda 表示式 lambda expressions 是linq實現的另一特性。lambda表示式的作用就是使用使用函式式語法,將方法實現關聯到委託例項。在使用查詢表示式 query expressions 時,查詢表示...
Lambda表示式表示式樹
在c 3.0中,繼匿名方法之後出現了lambda 表示式,使表達更為簡潔 快捷。lambda 表示式使用lambda 運算子 來定義,語法如下 引數列表 lambda 運算子的左邊是輸入引數,定義lambda表示式的接收引數列表,右邊包含表示式或語句塊,表示將表示式的值或語句塊返回的值傳給左邊的引數...