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注意使用expression.lambda方法時,不需要提供常量表示式樹);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();
呼叫
console.writeline(compile(3當left和right都是引數表示式樹時));console.writeline(compile2(
3));
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...