首页 > 解决方案 > 如何使用表达式来模拟数学表达式?

问题描述

下面是我的代码片段:

        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”之间没有二元运算符乘法。我将乘法更改为添加和 div 错误消息是相同的。

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

ps:我不会使用类似的表达方式ConstantExpression constant1 = Expression.Constant(5.0);。因为如果我编写如下代码:

Console.WriteLine(string.Format("5*5.3={0}",5 * 5.3));

没关系,有没有办法模拟这样的数学表达式?

标签: c#expression

解决方案


如果你想避免使用

ConstantExpression constant1 = Expression.Constant(5.0);

您可以使用:

ConstantExpression constant1 = Expression.Constant(5d);

推荐阅读