对作为方法中的参数传递的委托执行的操作

本文关键字:执行 操作 参数传递 方法 | 更新日期: 2023-09-27 18:29:51

作为任务的一部分,我必须编写一个简单的委托,它接受两个int并返回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)为参数,并返回委托的方法呢?委托将是函数参数结果的乘积?如何调用该函数?

对作为方法中的参数传递的委托执行的操作

您可以试试这个。

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>