作为我的assigment的一部分,我必须编写简单的委托,它需要两个整数并返回int,这很容易
public delegate int Foo(int X, int Y);
public static int mul(int x, int y)
{
return x * y;
}
public static int add(int x, int y)
{
return x + y;
}
Foo f1 = mul;
但是我如何编写一个方法,将两个委托(Foo)作为参数,并返回委托,它将是函数参数的结果的乘法?如何调用该功能?
答案 0 :(得分:0)
你可以试试这个。
public delegate int AddThanMul(int a, int b, int c, int d);
public static AddThanMul CreateAddThanMulFunction(Foo add1, Foo add2)
{
return (a,b,c,d) => add1(a,b) * add2(c,d);
}
用法
var func = CreateAddThanMulFunction(add, add);
var result = func(1,2,3,4); //returns 21
同样如上所述,您可以使用' Func<>'而不是代表。有时它可能更简单。
例如delegate int Foo(int X, int Y)
等于Func<int,int,int>