1.3 Expression.Lambda表达式树的介绍
在 C# 中,几乎所有东西都是表达式,比如:
1). 3是常量表达式 : Expression.Constant
2). x,y是变量表达式:Expression.Parameter(typeof(变量类型), 变量名称);
3). !a 一元表达式
4). a+b 二元表达式, 比如Expression.Add
5).Math.Sin(x) 方法调用表达式, Expression.Call。
6). new StringBuilder() : new 表达式。
显然表达式的组合可以形成表达式树,比如 2+Math.Sin(x+y).
通过表达式树,可以将代码逻辑表示为数据结构,并动态编译为可执行的委托. 举例如下:
例1:实现 y = a+b的函数功能
方法1),使用委托。
Func<int, int, int> delFun = (a, b) => (a + b);
int y = delFun(2, 3); //得到5
方法2),使用lamda表达式 + Expression。
Expression<Func<int, int, int>> myExpress = (a, b) => (a + b);
Func<int, int, int> delFun = myExpress.Compile();
int y = delFun(2, 3); //得到5
方法3)一