我有一个数值分析程序,为简单起见,它会计算类似于以下内容的算法:y = ax^3 + bx^2 + cx + d;我在运行时计算a,b,c,d的值,并希望将以下等效值作为Func<double, double>传递。在这里我可以为X设置一个值,并得到Y。y = 12x^3 + 13x^2 + 14x + 15;其中12,13,14,15是在运行时计算的数字。我意识到这可以通过传递双精度数组来完成,如下所示:Func<double[], double>但我试图避免传递常量(可能很多)。有什么方法可以在运行时在func中设置这些数字吗?(最好不要计算Func 本身的a,b,c,d部分?a,b,c,d的计算是功的80%)例如。:a = ...b = ...c = ...Func<x, double> { ((const)a) * x^3 + ((const)b) * x^2 + ((const)c) * x + 15;}`对于ABCD的每次评估-我将评估10 x。 (adsbygoogle = window.adsbygoogle || []).push({}); 最佳答案 我不确定我是否完全理解您的要求,但是您可以尝试类似的方法吗?Func<double, double> CreateCalculationFunc(){ double a = heavy calculation; double b = heavy calculation; double c = heavy calculation; double d = heavy calculation; Func<double, double> calculation = (x) => { // You can use the constants in here without passing them as parameters return x * (a * b / c - d); }; return calculation;}在这种情况下,您只需调用CreateCalculationFunc(),它将进行一次繁重的计算,然后返回可重用的Func<double,double>进行变量计算。当然,这可以扩展到任意数量的预先计算的常数和多个变量。 (adsbygoogle = window.adsbygoogle || []).push({});
08-26 15:59
查看更多