如何在C#中计算用户输入的字符串?

如何在C#中计算用户输入的字符串?,c#,C#,我正试图用C#语言制作一个计算器。现在我想知道是否可以进行计算,它位于文本字段中。例如,用户输入文本字段(2*3)+6。现在,我如何告诉脚本计算该值,然后输出结果?您可以使用以下方法: 印刷品: 12 当然,不要期望能够用这种方法计算任何复杂的函数。您仅限于 如果您想处理更复杂的表达式,可以使用。您可以使用System.Linq.Dynamic库来执行此操作: ` ` 你可以下载一份 注意:字符串可能是“(2*3)+6”,但这种方法还有一个好处,就是你也可以将值传递给方程。如果你想从头开始创建

我正试图用C#语言制作一个计算器。现在我想知道是否可以进行计算,它位于文本字段中。例如,用户输入文本字段
(2*3)+6
。现在,我如何告诉脚本计算该值,然后输出结果?

您可以使用以下方法:

印刷品:

12
当然,不要期望能够用这种方法计算任何复杂的函数。您仅限于


如果您想处理更复杂的表达式,可以使用。

您可以使用
System.Linq.Dynamic
库来执行此操作:

`

`

你可以下载一份


注意:字符串可能是“(2*3)+6”,但这种方法还有一个好处,就是你也可以将值传递给方程。

如果你想从头开始创建自己的解决方案,那么查找“反向波兰符号”调车场算法似乎也很常见:大约有十几个重复的问题。这将起作用,但决不是DataTable设计的目的。我以前没有这种方法的经验,所以我可能在这里束手无策,但文档中指出
表达式参数需要一个聚合函数。
-那么这真的会起作用吗?哈哈,太酷了!然而,如果他正在做作业或试图学习这个技巧,他是不会做的。很高兴了解这一点:)@phpheini只需实现调车场算法。这是你的老师期望的,也是你从作业中学到最多东西的方式。这个答案有点像巨魔的答案。不过它还是非常酷,是一种开发者内部的幽默。你准备好和你的老师争论这个问题的定义了吗?我肯定达林是,但你是吗?:)此外,他还可以通过添加计算方法不支持的单个运算符轻松扩展问题。这将剔除像这样的技巧解决方案,但将很容易添加到真正的解决方案中。
12
    static void Main(string[] args)
    {
        const string exp = "(A*B) + C";

        var p0 = Expression.Parameter(typeof(int), "A");
        var p1 = Expression.Parameter(typeof(int), "B");
        var p2 = Expression.Parameter(typeof(int), "C");

        var e = System.Linq.Dynamic.DynamicExpression.ParseLambda(new[] { p0, p1, p2 }, typeof(int), exp);

        var result = e.Compile().DynamicInvoke(2, 3, 6);

        Console.WriteLine(result);
        Console.ReadKey();
    }