1.什么是委托
委托(delegate)是一个类,其定义了方法的类型,以实现将方法作为参数传入另一个方法。即委托可看作一种自定义的方法类型,可类比自定义的数据类型来理解。
用户如果要使用委托,和C#中引用类的方法一样,需要一个实例化的载体。那这个载体就是事件(event)。
2.什么是事件
事件是建立在已经定义【委托类型】的基础上,可看作一个进行了封装的委托类型的变量。
3.示例:定义委托(delegate)和事件(event)
//定义委托类型:展示了方法基本结构 public delegate void DelegateEventHandler(string _param); // 基于上面的委托定义事件:可注册多个实际方法,并根据注册顺序执行 public event DelegateEventHandler DelegateEvent; public void Run1(string _param) { if(DelegateEvent!=null) { DelegateEvent(_param); } }public void Run2()
{string _param="";
.....一系列操作给_param赋值.....
if(DelegateEvent!=null)
{
DelegateEvent(_param);
}
}
4.定义方法
public void Fun1(string _param){......}
public void Fun2(string _param){......}
public static void Fun3(string _param){......}
5.示例:注册方法
DelegateClass del = new DelegateClass();
FunClass fun = new FunClass();
del.DelegateEventHandler += fun.Fun1;
del.DelegateEventHandler += (new FunClass()).Fun2;
del.DelegateEventHandler += FunClass.Fun3;
6.示例:执行方法
del.Run("This is a param");