事件是基于委托的,为委托提供了一个发布/订阅机制。可以说事件是一种特殊的委托,他的调用和委托是一样的。
事件的声明
public event 委托类型 事件名称
通常事件的命名以事件名称+Event来命名。如public event delegate NotifyEvent;
事件和委托的区别如下:
事件只能在方法的外部进行声明,而委在方法的外部和内部都可以声明。
事件只能在类的内部触发,不能在类的外部触发。而委托在类的内部和外都都可以触发。
委托一般用于回调,而事件用于外部接口。例如在观察者模式中,在被观察者中可以声明一个事件作为外部观察者注册的接口。
同时,这个事件只能在被观察者内部触发,而观察者中无法触发该事件,从而保证了安全性。