sple表示式 Lambda表示式詳解

2021-10-13 05:54:46 字數 2326 閱讀 2541

前言

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表示式的接收引數列表,右邊包含表示式或語句塊,表示將表示式的值或語句塊返回的值傳給左邊的引數...