Вам необходимо определить возвращаемое значение как ожидаемое значение Func:
Func<double, double, double> MakeFunction(double c, double d)
, теперь вы можете использовать лямбда-выражение для создания желаемой функции:
return (a,b) => a + b * c + d;
Объяснение:
(a,b)
обозначает входные параметры для вашей функции.Поскольку указанное возвращаемое значение в сигнатуре метода указывает, что это будут 2 параметра типа double
.часть после =>
обозначает вычисление, которое будет выполнено.
Теперь вы можете использовать его следующим образом:
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);
ВЫХОД:
Функция: 11
Прямой тест: 11