Expression就是表达式目录树,是以树形数据结构表示代码,其中每一个节点都是一种表达式。
用lambda表达式来创建一个简单的Expression
使用lambda表达式,编译器在生成IL时会帮我们拼装表达式目录树,示例:
Expression<Func<int, int, int>> expr = (a, b) => a * b + 3;
调试查看表达式的结构:
由图片可以看出,表达式目录树它是以优先级最低那个运算符为根节点,然后再分左右节点,这样子记录数据的。可以用一个二叉树的结构来表示一下:
手动拼装表达式目录树
ParameterExpression Left_a = Expression.Parameter(typeof(int), "a");//Left: ExpressionParameter
ParameterExpression Right_b = Expression.Parameter(typeof(int), "b");//Right: ExpressionParameter
var Right_3 = Expression.Constant(3);//Right:ExpressionConstant
var L