天天看点

Expression 表达式树学习整理

整理了一下表达式树的一些东西,入门足够了

先从ConstantExpression 开始一步一步的来吧  它表示具有常量值的表达式

我们选建一个控制台应用程序

下边的MethodCallExpression你也许不知道是什么回事,不要急我下边会详细讲的,这相当于

Console.WriteLine("aaa");  输出一个常量,看一下结果

Expression 表达式树学习整理

如果想自己输入一个值输出呢,那就用ParameterExpression 它表示一个参数表达式,我们只要把上边的代码做一下小改动就行

参数parameExp就是一个string类型的变量我们让它输出一个Hello!!

Expression 表达式树学习整理

有点感觉了吧,慢慢来好玩的还在后边,现在我们就说一下MethodCallExpression它可以调用静态方法和实例方法,我们上边的代码就是调用 的静态方法

,我先讲一下调用静态方法,再讲调用实例方法。

我们建一个返回string的静态方法,传入一个object类型的值

看一下我们是怎么调用自己的静态方法的

  

Expression 表达式树学习整理

new Type[] { typeof(object) } 就是我们的方法里的参数类型,后边的paraObj是相当于参数值了,如果 是多参数就在 Type[],和后边再加上相应 的类型和参数就行

静态方法你有些了解了,下面讲一下调用实例方法

我们写一个非静态方法

调用的时候只要把上边的代码改动一点就ok Expression.Call为我们提供了我们想要的重载

Expression 表达式树学习整理

 简单吧。

再下来我们讲什么呢,也许你猜到了UnaryExpression一元运算符表达式和 BinaryExpression  二元运算符表达式

我们先看一个这两个表达式的简单例子后,我们再做一个复杂的例子

UnaryExpression我们做一个5--的表达式

Expression 表达式树学习整理

BinaryExpression  我们做一个a+b的例子 

Expression 表达式树学习整理

不难吧,

我们做一把两个表达式放一起做一个例子吧 (a+b)*(--c)

Expression 表达式树学习整理

今天就讲到这

继续阅读