事件是對委託的封裝。如果乙個類裡,你把乙個委託宣告為 public 了,那麼外部就可以隨意改變委託變數的值,包括清空委託變數等,這樣的話就違背了物件導向思想的封裝特性;但如果宣告為 private ,那就失去了委託的意義(在外部不能給委託新增函式引用)。此時就需要事件了。
可以把事件看成是委託的例項,事件是對委託的封裝,就像類的屬性成員一樣,事件封裝了委託,這樣,就可以把委託定義為 private 型別,在外部就可以通過與委託對應的事件來訪問委託了,而事件受到限制符「+=」「-=」的影響,不會破壞封裝的特性。
事件的本質就是委託。委託型別用 delegate 修飾,事件型別用 event 修飾。
另外:委託與事件的關係可以形象的用 欄位與屬性來進行模擬,事件確實可以自定義add()、remove()方法,屬性可以自定義get、set
C 多播委託與事件
1.發布 訂閱模式 委託本身是乙個更大的模式的基本單位,這個模式稱為發布 訂閱。委託的使用及其對publish subscribe模式的支援是需要學習的重點。雖然,很多問題都可以單獨用委託來實現,但是事件構造提供了額外的 封裝 使publish subscribe模式更容易實現,更不容易出錯。2.多...
多播委託與事件
我們通過委託可以實現把方法作為引數,傳遞給委託執行。同樣,我們的委託也可以依次執行多個方法,此時就需要我們的多播委託了。沒有接觸多播委託之前,我們呼叫多個方法的委託定義如下 returnwithpara para new returnwithpara showid 當前類的方法 returnwith...
c 委託 與多播委託delegate
委託又叫匿名函式,首先我們來說為什麼要使用委託 委託到底是什麼 舉乙個例子 我想求煉表裡少於10的數的和,getsum static int getsum listlist return sum 我又想求煉表裡所有奇數的和,那麼是否是又要寫乙個函式getsum2 來求呢 static int get...