Re: [問題] event 和 delegate

看板C_Sharp作者 (躂躂..)時間15年前 (2010/11/15 19:59), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串6/7 (看更多)
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
文章代碼(AID): #1CuI2lcz (C_Sharp)
討論串 (同標題文章)
文章代碼(AID): #1CuI2lcz (C_Sharp)