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

时间:2012-03-20 22:12:16

标签: c#

我正在尝试用C#构建一个计算器。现在我想知道是否可以进行文本字段内的计算。例如,用户进入文本字段(2*3)+6。现在我如何告诉我的脚本计算它然后输出结果?

2 个答案:

答案 0 :(得分:13)

您可以使用Compute方法:

using System;
using System.Data;

class Program
{
    static void Main()
    {
        var result = new DataTable().Compute("(2*3)+6", null);
        Console.WriteLine(result);
    }
}

打印:

12

当然不要指望用这种方法计算任何复杂的函数。您仅限于basic arithmetic

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

答案 1 :(得分:1)

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

`

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

`

您可以下载here的副本。

N.B。字符串可能只是“(2 * 3)+ 6”,但是这种方法还有奖励你可以将值传递给等式。