表达式树是什么,如何使用它们,为什么要使用它们?

69

我刚刚了解了表达式树的概念,这是我多次听到的。我只想了解表达式树是什么以及其用途。

如果有人能向我提供简单的解释和使用示例,我会非常感激。


回答了一些例子..https://dev59.com/MHRC5IYBdhLWcg3wG9bp#20470060 - Moumit
1个回答

67

表达式树是一种包含表达式的数据结构,它基本上是代码。因此,它是表示你可能在代码中进行的计算的树状结构。这些代码片段可以通过对一组数据“运行”表达式树来执行。

表达式树的一个很好的特点是,你可以在代码中建立它们; 也就是说,你可以在代码中构建可执行的代码(或一系列步骤)。在执行之前,你还可以通过将表达式替换为其他表达式来修改代码。

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

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


4
这并不完全正确。正如链接文章所指出的,表达式树主要用于表示将通过网络发送到其他地方执行的计算。因此,它们不包含代码,而是代替了代码。 - david.pfx
3
表达式树可用于本地或远程执行任何想要进行的计算。您可以轻松编写解析器,将输入的表达式转换为表达式树。此外,我从未说过表达式树包含代码。 - Roy Dictus
2
如果“带有代码片段的树形结构”并不意味着它们“包含代码”,那么您应该编辑您的答案以澄清这一点。您应该明确表明表达式根本不包含任何IL代码,并且依赖于进一步转换为可执行内容。 - david.pfx
1
@RoyDictus 如果不仔细阅读,这并不明显。假设别人聪明通常是个坏主意。请明确表达。 - Gusdor
4
我还要指出的是,寻求此问题答案的人很可能对答案一无所知,应该假定用户在这个问题上的智力或知识为0。 - Steve Byrne
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接