От: | Jack128 | ||
Дата: | 23.06.16 09:26 | ||
Оценка: | 74 (1) |
А если судить по коду, то false — означает, что не нужно обходить ДОЧЕРНИЕ узлы текущего нода. Но обход соседних узлов будет продолжен/// <summary>Visits expression tree.</summary>
/// <param name="expr"><see cref="T:System.Linq.Expressions.Expression" /> to visit.</param>
/// <param name="func">Visit function. Return false to stop.</param>
[Test]
public void XXX()
{
var testExpr = Expr.Func((int x, int y) => x + y);
testExpr.Visit(expr =>
{
Console.WriteLine($"expr = {expr}");
if (expr.NodeType == ExpressionType.Parameter)
{
Console.WriteLine("Отмена");
return false;
}
return true;
});
}
expr = (x, y) => (x + y)
expr = (x + y)
expr = x
Отмена
expr = y
Отмена
expr = x
Отмена
expr = y
Отмена