作为我正在使用的另一个程序的输入,我需要输入以下形式的委托(delegate):

Func<double, double, double>.

我希望发送的功能是



其中cd是运行时已知的已知常量。

因此,我需要一种方法,该方法采用值c和d,然后给我一个函数F(a,b)。我想我需要做的是首先创建方法:
double der(double a, double b, double c, double d)
{
   return a + b * c + d;
}

从这种方法中,我必须对委托(delegate)做一些事情才能得到我的功能。您看到如何解决这个问题了吗?

最佳答案

您需要将返回值定义为预期的Func:

Func<double, double, double> MakeFunction(double c, double d)

现在,您可以使用lambda表达式构造所需的功能:
return (a,b) => a + b * c + d;

解释:
(a,b)表示函数的输入参数。由于方法签名中指定的返回值指定这将是double类型的2个参数。 =>之后的部分表示将要执行的计算。

现在,您可以通过以下方式使用它:
var myFunc = MakeFunction(3, 4);
Console.WriteLine(myFunc(1, 2));


double a = 1;
double b = 2;
double c = 3;
double d = 4;
var myFunc = MakeFunction(c, d);
Console.WriteLine("Func: " + myFunc(a, b));
Console.WriteLine("Direct test: "a + b * c + d);

关于c# - 创建一个为我们提供另一个功能的功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54906104/

10-12 12:41
查看更多