【问题标题】:How to create dynamic mathematical function? [duplicate]如何创建动态数学函数? [复制]
【发布时间】:2012-12-17 18:53:55
【问题描述】:

可能重复:
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; };

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

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

【问题讨论】:

标签: c# delegates


【解决方案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();

【讨论】:

    【解决方案2】:

    您只需要创建使用DataTable.Compute 的方法(匿名或不匿名)。

    Func<double, double> function = x => 
        (double)(new DataTable().Compute(x + " * 10 / 3", null));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-09
      • 2013-01-19
      • 2021-02-27
      • 2019-05-09
      • 1970-01-01
      • 2018-05-22
      • 1970-01-01
      相关资源
      最近更新 更多