Являются ли деревья выражений LINQ собственными деревьями, как, например, графы (направленные или нет, википедия не слишком согласна) без циклов? Каков корень дерева выражений из следующего выражения C #?
(string s) => s.Length
Дерево выражения выглядит так, где «->» обозначает имя свойства узла, через который доступен другой узел.
->Parameters[0]
Lambda---------Parameter(string s)
\ /
\->Body /->Expression
\ /
Member(Length)
При использовании ExpressionVisitor для посещения LambdaExpression, ParameterExpression посещается дважды. Есть ли способ сделать это использовать ExpressionVisitor для посещения LambdaExpression, чтобы все узлы были посещены ровно один раз и в определенном, хорошо известном порядке (предварительный заказ, порядок, последующий порядок и т. д.)?