ExpressionVisitor.Visit参数,为什么每个参数打印2次?

时间:2012-12-15 14:02:34

标签: expressionvisitor

为什么VisitParameter会打印每个参数2次?

class MyExpressionVisitor : ExpressionVisitor
    {
        protected override Expression VisitParameter(ParameterExpression node)
        {
            Console.WriteLine(node.Name);
            Console.WriteLine("*************************");
            return base.VisitParameter(node);
        }
    }

    class Program
    {
        public static void Main(string[] args)
        {
            Expression<Func<int,int int>> someExpr = (x,y) => x + y + 1;
            var myVisitor = new MyExpressionVisitor();
            myVisitor.Visit(someExpr);
            Console.ReadKey();
        }
    }

结果:

X


ý


X


ý


1 个答案:

答案 0 :(得分:0)

好的,经过大量检查后我得到了答案。 VisitParameter()函数返回所有参数*它们在函数中使用的时间。

Expression<Func<int,int int>> someExpr = (x,y) => x + y + 1;

x使用2次,y为1,因此它会显示x 2次,y只显示。{/ p>