为什么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 :(得分:0)
好的,经过大量检查后我得到了答案。 VisitParameter()
函数返回所有参数*它们在函数中使用的时间。
Expression<Func<int,int int>> someExpr = (x,y) => x + y + 1;
x
使用2次,y
为1,因此它会显示x
2次,y
只显示。{/ p>