Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何创建动态数学函数?_C#_Delegates - Fatal编程技术网

C# 如何创建动态数学函数?

C# 如何创建动态数学函数?,c#,delegates,C#,Delegates,可能重复: 我能做到这一点 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; }; 那么,我如何像第一个例子那样进行计算,并将其分配给像第二个例子那样的委托呢 目标是只进行一次计算工作,然后将

可能重复:

我能做到这一点

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; };
那么,我如何像第一个例子那样进行计算,并将其分配给像第二个例子那样的委托呢


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

您只需要创建使用
DataTable.compute的方法(匿名或非匿名)

Func<double, double> function = x => 
    (double)(new DataTable().Compute(x + " * 10 / 3", null));
Func函数=x=>
(双精度)(新数据表().Compute(x+“*10/3”,null));
我会用它来满足这些需求。比如说

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

可能是的重复项,并且您想要一个内联委托,而不仅仅是一个类方法?