1.概念:由代码编写的逻辑以表达式的方式存储在树状的结构里
2.拆分表达式:
var sum=1+2;
表达式的整体为:var sum=1+2;
左部分 var sum
隐式声明关键字 var
变量声明 sum
赋值运算符 =
右部分 1+2
左操作数 1
运算符 +
右操作数 2
3.在编程过程中,实际对应的类在System.Linq.Expression中
Demo:构建 参数:整型 返回值:整型 操作:参数+5
Expression<Func<int, int>> Add = (num) => num + 5;
var DemoFunc=Add.Compile();
Console.WriteLine(DemoFunc(5));
这里的操作很简单,先创建一个lambda表达式(num)=>num+5;
因为是参数为整型,返回类型也为整型所以将其分配给Expression<Func<int,int>> 变量Add中
但这不是创建表达式树的唯一方法。 很多情况下,可能需要在运行时在内存中生成一个表达式。
表达式树的构建必须是从叶到根的构建
Demo:return 1+2
Expression<Func> Result3=()=>1 + 2;
var result=Result3.Compile();
Console.WriteLine(result());
这里的叶子节点是常量1 2,常量使用Expression.Constant创建