【问题标题】:Operation on passed delegates as arguments in method将传递的委托作为方法中的参数进行操作
【发布时间】:2016-04-16 14:36:15
【问题描述】:

作为我分配的一部分,我必须编写简单的委托,它接受两个整数并返回整数,这很容易

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

【问题讨论】:

  • 你能检查答案并告诉你在找什么吗??

标签: c# delegates return


【解决方案1】:

你可以试试这个。

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>

【讨论】:

  • 谢谢!这正是我一直在寻找的。我被卡住了,因为我尝试以某种方式将 Foo 作为您编写的函数的返回委托。
猜你喜欢
  • 1970-01-01
  • 2016-02-06
  • 1970-01-01
  • 2011-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-17
  • 2023-03-05
相关资源
最近更新 更多