如何使用表达式模拟数学表达式?

时间:2019-03-13 06:51:06

标签: c# expression

下面是我的代码片段:

        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));

可以,有什么方法可以模拟这样的数学表达式?

1 个答案:

答案 0 :(得分:0)

如果要避免使用

ConstantExpression constant1 = Expression.Constant(5.0);

您可以使用:

ConstantExpression constant1 = Expression.Constant(5d);