在方法

时间:2016-01-12 04:56:48

标签: c# delegates return

作为我的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)作为参数,并返回委托,它将是函数参数的结果的乘法?如何调用该功能?

1 个答案:

答案 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>