0

为什么 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


是的


4

1 回答 1

0

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

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

x被使用了 2 次并且y是 1,所以它会显示x2 次并且y只有那些。

于 2012-12-15T20:36:57.533 回答