事件是基于委托的,為委托提供了一個發(fā)布/訂閱機制逸嘀⊥鞯可以說事件是一種特殊的委托,他的調(diào)用和委托是一樣的抬旺。
事件的聲明
public event 委托類型 事件名稱
通常事件的命名以事件名稱+Event來命名弊予。如public event delegate NotifyEvent;
事件和委托的區(qū)別如下:
事件只能在方法的外部進行聲明,而委在方法的外部和內(nèi)部都可以聲明开财。
事件只能在類的內(nèi)部觸發(fā)汉柒,不能在類的外部觸發(fā)。而委托在類的內(nèi)部和外都都可以觸發(fā)责鳍。
委托一般用于回調(diào)碾褂,而事件用于外部接口。例如在觀察者模式中历葛,在被觀察者中可以聲明一個事件作為外部觀察者注冊的接口正塌。
同時,這個事件只能在被觀察者內(nèi)部觸發(fā)啃洋,而觀察者中無法觸發(fā)該事件传货,從而保證了安全性。