事件(event)的邏輯

1.申請一個委託

delegate void xxxxxHandler(object sender,EventArgs e);

xxxxxHandler 當然可以是其他任意合法名字,用Handler後綴是好習慣,一看就知道這是一個委託。委託不一定要帶參數。

2.定義一個event

event xxxxxHandler xxxxxEvent;

event可視作一個指針數組,裏面保存着事件響應方法的指針。跟Handler一樣,用Event作爲後綴一看就知道這是個event。

3.event 觸發點

必須是可執行代碼內(而非變量定義部分),比如一個類的某個方法中,這叫訂閱事件。

public class abc

{

public void OnxxxxxEvent()

{

xxxxxEvent.Invoke(參數1,參數2);

}

}

事件觸發用其Invoke方法實現,Invoke遍歷event這個指針數組,逐一執行添加到裏面的方法。

事件被Invoke前,必須有方法加入,xxxxxEvent += xxx(object sender,EventArgs e)

否則其值是null而引發‘未將對象引用設置到對象的實例’的錯誤。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章