2012-12-15 61 views
0

爲什麼VisitParameter打印每個參數2次?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


ÿ


回答

0

好的,經過很多檢查後我得到了答案。 VisitParameter()函數返回所有參數*它們在函數中使用了多少時間。

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

x使用2倍,並y爲1,因此它會顯示x 2倍,並y唯一的。