看板 C_Sharp 關於我們 聯絡資訊
delegate 和 event 的差別, 其實就像 field 和 property 的差別, property 提供 getter/setter 來操作 field, 來避免不正確的付值, event 的目的也是一樣, 提供 adder/remover 來操作 delegate 以大家常見的 EventHandler delegate 來舉例 public event EventHandler OnEvent; 其實是像 private EventHandler _onEvent; <-- implicitly generated delegate public event EventHandler OnEvent { add { _onEvent = (EventHandler)Delegate.Combine(_onEvent, value); } remove { _onEvent = (EventHandler)Delegate.Combine(_onEvent, value); } } 這就像 default property public int MyProperty { set; get; } 其實是如下的code是一樣的意思.. private int _MyProperty; <-- impilictly declared public int MyProperty { set { _MyProperty = value; } get { return _MyProperty; } } event出現的目的就跟property一樣, 是為了隱藏 delegate 這個 list 的 實作細節, 多一個可以在中間操作的機會.. 例如, 加多 multithread 的保護 (lock), 或是可以從中攔截 delegate 橋接到適當的 object 手上.. 語法上的差異當然有, 但其實不是重點 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.25.176.97