Why does VisitParameter print each parameter 2 times?
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();
}
}
The result:
x
y
x
y
Okay, I got the answer after a lot of checking. The
VisitParameter()function returns all the parameters * how much time they are used in the function.xis used 2 times andyis 1, so it will show thex2 times andyonly ones.