0

可能重复:
如何动态评估 C# 表达式?

我可以做这个;

int x = 6;
var result = new DataTable().Compute(x + " * 10 / 3", null);

还有这个;

public delegate double function(double x);
function func = delegate(double x) { return x * 10 / 3; };

那么我怎样才能像第一个例子一样计算并将它分配给像第二个例子一样的委托呢?

目标是只做一次计算工作,然后将它与许多变量一起使用。

4

2 回答 2

1

我会使用NCalc来满足这些要求。例如

NCalc.Expression expr = new NCalc.Expression("x * 10 / 3");
expr.EvaluateParameter += (name, args) =>
    {
        if (name == "x" && somecondition == 1) args.Result = 6;
        if (name == "x" && somecondition == 2) args.Result = 12;
    };
var result = expr.Evaluate();
于 2012-12-17T19:09:56.267 回答
0

您只需要创建利用DataTable.Compute.

Func<double, double> function = x => 
    (double)(new DataTable().Compute(x + " * 10 / 3", null));
于 2012-12-17T19:05:16.213 回答