c#LINQ表达树

如果你已经用过LINQ, 你应该知道函数方式,以及包含的丰富的类库, 如果你仍不了解, 那根据下面的链接去熟悉一下 the LINQ tutorial,  lambda 

表达树提供了丰富的包含参数的函数方式。

静态树解析

一个表达树是定义代码的数据结构

var sum = 1 + 2;

二元表达式, 更准确的来说,是一个二元相加表达式, 二元表达式包含二个结点, 二个结点都是固定表达式, 左边是1, 右边是2

这是一个树的完整体

定义定量状态 (var sum = 1 + 2;)

  • 显示声明变量 (var sum)
    • 显示声明var类型 (var)
    • 声明变量名称 (sum)
  • 操作类型 (=)
  • 二元相加表达式 (1 + 2)
    • 左边操作数(1)
    • 相加运算符 (+)
    • 右边操作数 (2)
var finalAnswer = this.SecretSauceFuncion(
    currentState.createInterimResult(), currentState.createSecondValue(1, 2),
    decisionServer.considerFinalOptions("hello")) +
    MoreSecretSauce('A', DateTime.Now, true);

对比表达树, 上述的方式就太不直观, 扩展性差

在.NET Core framework中存在大量的表达式类型, 你可以从这获取here

// Addition is an add expression for "1 + 2"
var one = Expression.Constant(1, typeof(int));
var two = Expression.Constant(2, typeof(int));
var addition = Expression.Add(one, two);

以上简单的使用一些静态类创建表达树

posted @ 2017-09-18 11:41  一只老鼠  阅读(416)  评论(0编辑  收藏  举报