Expression.Lambda().Compile() 时出错
Error upon Expression.Lambda().Compile()
我有以下简单代码:
var b = Expression.Parameter(typeof(double), "b");
var negativeB = Expression.Negate(b);
如果我停在那里并尝试快速观看 Expression.Lambda(negativeB).Compile()
我收到错误消息:
variable 'b' of type 'System.Double' referenced from scope '', but it
is not defined
关于此错误消息的其他答案似乎没有说明这里发生了什么,或者在这种情况下如何解决它。
您应该在 Lambda 中指定参数 (b
):
var l = Expression.Lambda(negativeB, b).Compile();
var r = l.DynamicInvoke(32); // = -32
您有一个表达式 negativeB
,需要输入参数 b
。但是,当您定义 Lambda 时,您没有定义任何参数。
你需要做的是:
Expression.Lambda(negativeB, b).Compile();
然后编译
我有以下简单代码:
var b = Expression.Parameter(typeof(double), "b");
var negativeB = Expression.Negate(b);
如果我停在那里并尝试快速观看 Expression.Lambda(negativeB).Compile()
我收到错误消息:
variable 'b' of type 'System.Double' referenced from scope '', but it is not defined
关于此错误消息的其他答案似乎没有说明这里发生了什么,或者在这种情况下如何解决它。
您应该在 Lambda 中指定参数 (b
):
var l = Expression.Lambda(negativeB, b).Compile();
var r = l.DynamicInvoke(32); // = -32
您有一个表达式 negativeB
,需要输入参数 b
。但是,当您定义 Lambda 时,您没有定义任何参数。
你需要做的是:
Expression.Lambda(negativeB, b).Compile();
然后编译