【发布时间】:2012-02-17 17:06:33
【问题描述】:
LINQ 表达式树是否是正确的树,例如没有循环的图(有向与无向,维基百科似乎不太一致)?以下 C# 表达式的表达式树的根是什么?
(string s) => s.Length
表达式树看起来像这样,“->”表示节点的属性名称,另一个节点可以通过它访问。
->Parameters[0]
Lambda---------Parameter(string s)
\ /
\->Body /->Expression
\ /
Member(Length)
当使用 ExpressionVisitor 访问 LambdaExpression 时,ParameterExpression 被访问了两次。有没有办法使用 ExpressionVisitor 访问 LambdaExpression,以便所有节点都被访问一次,并且以特定的、众所周知的顺序(前序、中序、后序等)?
【问题讨论】:
-
你为什么需要这个,你为什么在乎?
-
@DanielHilgarth 我认为这是一个关于表达式树的基本概念如何工作的合理问题。这是一个问答网站,提问者似乎对表达式树的工作原理感到好奇。
-
这个问题可能是为了投票,但很有趣。
-
有谁知道数学表达式树属于什么分支?我想看看数学概念
-
@DavidHoerster:这确实是一个合理的问题,但通常情况下,人们提出这样的问题是为了解决一些问题。我宁愿知道最初的问题并帮助解决它。
标签: c# linq expression-trees