如何创建动态数学函数?

时间:2012-12-17 18:53:55

标签: c# delegates

  

可能重复:
  How can I evaluate a C# expression dynamically?

我可以这样做;

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

那么我怎样才能像第一个例子一样计算并将其分配给代表,如第二个例子?

目标是只进行一次计算工作,然后将其用于许多变量。

2 个答案:

答案 0 :(得分: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();

答案 1 :(得分:0)

您只需创建使用DataTable.Compute

的方法(匿名或非匿名)
Func<double, double> function = x => 
    (double)(new DataTable().Compute(x + " * 10 / 3", null));