C# 中的委托(Delegate)类似于 C 或 C++ 中函数的指针,但它多了类型检查。委托(Delegate) 是存有对某个方法的引用的一种引用类型变量。引用可在运行时被改变。
委托(Delegate)特别用于实现事件和回调方法。所有的委托(Delegate)都派生自 System.Delegate 类。
实例如下:
class DelegateClass
{
// 定义一个委托,输入返回参数都可以自定义
public delegate void ShowMessage_Delegate(string message);
public ShowMessage_Delegate ShowMessage_Fun;
// 用于绑定委托的函数,输入返回参数必须和委托移一致
public void ShowMessage1(string message)
{
Console.WriteLine("M1:"+message);
}
// 用于绑定委托的函数2
public void ShowMessage2(string message)
{
Console.WriteLine("M2:" + message);
}
}
使用的例子:
static void DelegateNSTest()
{
DelegateNS.DelegateClass dc = new DelegateNS.DelegateClass();
// 委托函数可以随意绑定到相同格式的函数上
dc.ShowMessage_Fun = dc.ShowMessage1;
dc.ShowMessage_Fun("Run 1");
// 可以更换
dc.ShowMessage_Fun = dc.ShowMessage2;
dc.ShowMessage_Fun("Run 2");
// 可以同时绑定多个
dc.ShowMessage_Fun = dc.ShowMessage1;
dc.ShowMessage_Fun += dc.ShowMessage2;
dc.ShowMessage_Fun("Run 3");
}
运行 结果:



