事件和代理理解:
理解事件和代理主要分为两个方面:事件发布者和事件订阅者。他们分别负责的事情为:
一. 发布者:
1. 发布事件(即定义事件,并声明类型和方法)
2. 触发事件(即事件发布之后需要调用,对订阅者才有意义)
代理声明方法:
[public/private] delegate <返回值类型> <代理名称>(<参数列表>);
[public/private]:访问修饰符。
delegate:代理声明关键定,相当于类声明的Class关键定
<返回值类型>:代理所指向的方法的返回值类型
<代理名称>:代理类型的名称
<参数列表>:代理所的指向的方法的参数列表。
要想使代理对象能够指向一个方法,那这个方法的要满足两个条件
a.方法返回类型要与delegate声明中的“返回值类型”一致。
b.方法的形参形表要与delegate声明中的“参数列表”一致。
如:
定义代理:public delegate void MyDelegate();
定义事件:public event MyDelegate CloseMainWindowEvent;
二. 订阅者:
1. 注册事件(只有注册后,才能有反馈)
2.实现事件(即当发布者发布事件之后,订阅者收到消息所作的操作。)
比如注册以上方法:
定义实现事件:public void DoSomething(); //注意:实现事件应和定义代理方法类型参数一致
注册事件:CloseMainWindowEvent +=new CloseMainWindowEvent(Dosomething); //主意注册事件必须在定义事件中引用