创建一个为我们提供另一个功能的函数

问题描述 投票:5回答:1

作为我正在使用的另一个程序的输入,我需要输入表单的委托:

Func<double, double, double>.

我希望函数被发送到

F(A,B)= A + B * C + d

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

所以我需要的是一些方法,它取值c和d,然后给我一个函数F(a,b)。我认为我需要做的是首先创建方法:

double der(double a, double b, double c, double d)
{
   return a + b * c + d;
}

从这个方法我必须与代表做一些事情来获得我的功能。你看到如何解决这个问题?

c# .net func
1个回答
7
投票

您需要将返回值定义为预期的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);

OUTPUT: 功能:11 直接测试:11

© www.soinside.com 2019 - 2024. All rights reserved.