下面是我的代码片段:
ConstantExpression constant1 = Expression.Constant(5);
ConstantExpression constant2 = Expression.Constant(5.3);
Expression expr = Expression.Multiply(constant1, constant2);
var compiled = Expression.Lambda<Func<double>>(expr).Compile();
Console.WriteLine(compiled.Invoke());
Console.WriteLine();
系统在Expression expr = Expression.Multiply(constant1, constant2);
处引发异常
错误消息是“ System.Int32”和“ System.Double”之间没有二进制运算符乘。我将乘法更改为相加和除,错误消息是相同的。
如何使用表达式模拟数学表达式?
ps:我不会使用像ConstantExpression constant1 = Expression.Constant(5.0);
这样的表达式。因为如果我编写如下代码:
Console.WriteLine(string.Format("5*5.3={0}",5 * 5.3));
可以,有什么方法可以模拟这样的数学表达式?
答案 0 :(得分:0)
如果要避免使用
ConstantExpression constant1 = Expression.Constant(5.0);
您可以使用:
ConstantExpression constant1 = Expression.Constant(5d);