2012-04-04 92 views
65

我刚刚遇到了多次听过的表达树的概念。我只是想了解一个表达树和它的目的是什么意思。什么是表达树,您如何使用它们,以及为什么要使用它们?

我会喜欢它,如果有人也可以指导我简单的解释和使用样本。

+1

可能重复[为什么要使用Expression >而非Func键?](http://stackoverflow.com/questions/793571/why-would-you-use-expressionfunct-而不是功能) – nawfal 2014-07-07 06:52:34

+0

回答几个例子..http://stackoverflow.com/questions/403088/practical-use-of-expression-trees/20470060#20470060 – Moumit 2016-04-25 11:29:31

回答

63

表达式树是一个包含表达式的数据结构,它基本上是代码。所以它是一个树形结构,代表您可能在代码中进行的计算。这些代码片段可以通过在一组数据上“运行”表达式树来执行。

关于表达式树的一个好处是可以在代码中构建它们;也就是说,您可以在代码中构建可执行代码(或一系列步骤)。您也可以在执行代码之前通过用其他表达式替换表达式来修改代码。

表达式是一个函数委托,例如(int x => return x * x)

又见http://blogs.msdn.com/b/charlie/archive/2008/01/31/expression-tree-basics.aspx

+3

这不是真的。正如链接文章中指出的那样,表达式树主要用于表示计算结果,这些计算结果将通过网络发送到其他地方执行。为此,他们不包含代码;而不是代码。 – 2016-06-29 05:53:32

+1

表达式树可用于任何要在本地或远程执行的计算。您可以轻松编写一个解析器,将分类器转换为表达式树。我也从来没有说Expression Tree包含代码。 – 2016-07-13 14:10:55

+1

如果“其中包含代码的树结构”不是意味着它们“包含代码”,那么您应该编辑您的答案以使其清楚。您应该明确表示表达式不包含任何IL代码,并且依赖于被进一步转换为可执行文件。 – 2016-07-15 00:23:54

相关问题