關於面試中涉及到的事件的問題,我們只需要抓住幾個關鍵點就好了: 定義事件: 5 } ...
關於面試中涉及到的事件的問題,我們只需要抓住幾個關鍵點就好了:
- 事件是委托的封裝,可以理解為一種特殊的委托。
- 事件裡面其實就兩個方法(即add_event()和remove_event())和一個私有的委托變數,這兩個方法裡面分別是對這個私有的委托變數進行的合併和移除,當調用事件的+=時其實是調用的事件裡面的add_event()方法,同樣-=調用的是remove_event()方法。
- 事件只能夠從對象外部增加新的響應方法和刪除已知的響應方法,而不能主動去觸發事件和獲取其他註冊的響應方法等信息。如果使用公有的delegate則不能做這些限制,也就是說事件對委托做了限制,使委托使用起來更加方便。也有人說事件是對委托的閹割,大概也是這個意思。
定義事件:
1 public delegate void MyStudyEvent(object sender, EventArgs e);2 public class TestEvent
3 {
4 public event MyStudyEvent eMyStudyEvent;
5 }