表达式树有什么好处?

Aam*_*mol 5 .net expression-trees

在使用 .Net 语言开发应用程序时,我没有得到表达式树的使用或好处?真的有必要吗?

Mar*_*ell 5

表达式树允许您用常规 C#表达代码,但可以对其进行解构、检查和解释。例如,您可以通过编写等效的 TSQL 字符串(例如:LINQ-to-SQL 或实体框架)或 Web 服务查询 (astoria) 来解释它。您可以将其解释为 RPC 调用(我编写了一个基于表达式的 RPC 层)。

重复我的“解释表达式”博客文章

  • 委托版本( Func<int,int,bool>) 是 勤奋的管理者;“我需要你给我一种从 2 个整数到一个布尔值的方法;我不在乎如何 - 当我准备好时,我会问你 - 你可以告诉我答案”。
  • 表达式版本(Expr<Func<int,int,bool>>)是 尽职的分析师;“我需要你向我解释一下——如果我给你 2 个整数,你会如何给我一个布尔值?”

如果您有表达式,您可以调用Compile()形成委托(完全按照说明进行操作),或者您可以取消选择它并根据他们采取的步骤执行类似的操作。


另一种观点Expression是,它可以充当简化版本ILGenerator- 但仍然非常通用。对于元编程非常有用。这是一篇探讨该方法的文章


Dar*_*rov 2

表达式树允许您在运行时动态构建代码,而不是在 IDE 中静态键入代码并使用编译器。它们在文档中得到了很好的解释。