基于msdn页面,当我们声明一个委托时,我们需要指定返回值以及将通过委托调用的方法的参数。
我的问题:
让我说我有一个方法:
public int MethodA(bool bValue)
以及void MethodB(int iValue)
我是否需要在此为每个方法声明两个不同的委托,或者我可以使用一个?
感谢。
答案 0 :(得分: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);
答案 1 :(得分:1)
首先声明委托是为了让你可以在不看其声明的情况下调用方法。这就是为什么您需要为计划通过委托间接调用的每个函数签名使用不同的委托类型。
答案 2 :(得分: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();
}
}