我正在尝试用C#构建一个计算器。现在我想知道是否可以进行文本字段内的计算。例如,用户进入文本字段(2*3)+6
。现在我如何告诉我的脚本计算它然后输出结果?
答案 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”,但是这种方法还有奖励你可以将值传递给等式。