Lambda表示式樹

2021-08-05 21:55:54 字數 1954 閱讀 8260

//表示式的引數

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

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

//表示式的主體部分

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

//構建表示式樹

expressionint, int, int>> expressiontree = expression.lambdaint, int, int>>(be, a, b);

//分析樹結構,獲取表示式樹的主體部分

binaryexpression body = (binaryexpression)expressiontree.body;

//左節點,每個節點本身就是乙個表示式物件

parameterexpression left = (parameterexpression)body.left;

//右節點

parameterexpression right = (parameterexpression)body.right;

//輸出表示式樹

console.writeline("表示式樹結構為", expressiontree);

//輸出

console.writeline("表示式主體為:", environment.newline, body);

console.writeline("表示式左節點為:節點型別為表示式右節點為:節點型別為:", left, left.type, right, right.type, environment.newline);

//將lambda表示式構建成表示式樹

expressionint, int, int>> expressiontree = (a, b) => a + b;

//獲得表示式樹引數

console.writeline("引數1:,引數2:", expressiontree.parameters[0], expressiontree.parameters[1]);

//分析樹結構,獲取表示式樹的主體部分

binaryexpression body = (binaryexpression)expressiontree.body;

//左節點,每個節點本身就是乙個表示式物件

parameterexpression left = (parameterexpression)body.left;

//右節點

parameterexpression right = (parameterexpression)body.right;

//輸出表示式樹

console.writeline("表示式樹結構為", expressiontree);

//輸出

console.writeline("表示式主體為:", environment.newline, body);

console.writeline("表示式左節點為:節點型別為表示式右節點為:節點型別為:", left, left.type, right, right.type, environment.newline);

//將lambda表示式構建成表示式樹

expressionint, int, int>> expressiontree = (a, b) => a + b;

//通過呼叫compile方法來生成lambda表示式的委託

func delinstance = expressiontree.compile();

//呼叫委託例項獲取結果

int result = delinstance(2, 3);

console.writeline("2和3的和為", result);

Lambda表示式和Lambda表示式樹

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

Lambda表示式表示式樹

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

Lambda表示式樹

func compile 2 3 使用表示式樹的方式 constantexpression a expression.constant 2 constantexpression b expression.constant 3 binaryexpression add expression.add a...