2

基于 msdn 页面,当我们声明委托时,我们确实需要指定返回值以及将通过委托调用的方法的参数。

我的问题:

假设我有一个方法:

public int MethodA(bool bValue)并且void MethodB(int iValue)

我是否需要在这里为每种方法声明两个不同的委托,或者我可以使用一个来完成?

谢谢。

4

3 回答 3

2

我是否需要在这里为每种方法声明两个不同的委托,或者我可以使用一个来完成?

由于这些方法具有完全不同的签名,因此您需要不同的委托。但是,您可以使用内置Func<bool, int>Action<int>委托,而不是声明您自己的委托类型。

例如,您可以使用:

Func<bool,int> delegateA = this.MethodA;

Action<int> delegateB = this.MethodB;
// or:  Action<int> delegateB = new Action<int>(this.MethodB);
于 2012-10-09T00:39:24.833 回答
1

首先声明委托的目的是让您可以在不看到其声明的情况下调用方法。这就是为什么您计划通过委托间接调用的每个函数签名都需要不同的委托类型。

于 2012-10-09T00:42:08.543 回答
0

您可以使用匿名方法缩短代码,而不是定义单独的方法然后使用委托变量指向它。

   class Program{
   delegate void MethodsDelegate(string Message);
   static void Main(string[] args){
   MethodsDelegate method = delegate(string Message){
   Console.WriteLine(Message);
    };
   //---call the delegated method---
 method("Using anonymous method.");
 Console.ReadLine();
  }
}
于 2012-10-09T00:53:53.740 回答