Lambda表示式樹

2021-09-07 09:11:48 字數 1855 閱讀 8834

func compile = (() => 2 + 3);
使用表示式樹的方式

constantexpression a = expression.constant(2

);constantexpression b = expression.constant(3

);binaryexpression add =expression.add(a, b);

expression

int>> lambda= expression.lambdaint>>(add);

func

compile2 = lambda.compile();

呼叫

console.writeline(compile());

console.writeline(compile2());

輸出結果

要點:1、constantexpression 是常量表示式,通過expression.constant(object value)方法建立乙個常量表示式

2、binaryexpression 二元表示式 expression.add(expression left,expression right)這是加法二元表示式,同理還有subtract、multiply和divide分別對應減、乘和除二元表示式

3、expression.lambda>(add)轉換成lambda表示式樹

4、lambda.compile()將lambda表示式樹轉化成委託

lambda表示式

func compile = x=>x+2;
lambda表示式樹

constantexpression a = expression.constant(2

);parameterexpression b = expression.parameter(typeof(int),"b"

);binaryexpression add =expression.add(a, b);

expression

int,int>> lambda= expression.lambdaint,int>>(add,b);

func

compile2 = lambda.compile();

注意使用expression.lambda方法時,不需要提供常量表示式樹

呼叫

console.writeline(compile(3

));console.writeline(compile2(

3));

當left和right都是引數表示式樹時

func compile = (x,y)=>x+y;

parameterexpression a = expression.parameter(typeof(int), "a"

);parameterexpression b = expression.parameter(typeof(int),"b"

);binaryexpression add =expression.add(a, b);

expression

int,int,int>> lambda= expression.lambdaint,int,int>>(add,a,b);

func

compile2 =lambda.compile();

console.writeline(compile(

2,3));

console.writeline(compile2(

2,3));

Lambda表示式和Lambda表示式樹

原版來自 linq學習筆記之二 lambda表示式和lambda表示式樹 lambda 表示式 lambda expressions 是linq實現的另一特性。lambda表示式的作用就是使用使用函式式語法,將方法實現關聯到委託例項。在使用查詢表示式 query expressions 時,查詢表示...

Lambda表示式表示式樹

在c 3.0中,繼匿名方法之後出現了lambda 表示式,使表達更為簡潔 快捷。lambda 表示式使用lambda 運算子 來定義,語法如下 引數列表 lambda 運算子的左邊是輸入引數,定義lambda表示式的接收引數列表,右邊包含表示式或語句塊,表示將表示式的值或語句塊返回的值傳給左邊的引數...

Lambda表示式樹

表示式的引數 parameterexpression a expression.parameter typeof int a parameterexpression b expression.parameter typeof int b 表示式的主體部分 binaryexpression be ex...