委托和事件是什麼呢,他們之間有什麼異同呢?
委托由delegate關鍵字進行定義,它是一種特殊的類型。
委托可以像其他類型那樣進行定義,也可以像其他類型那樣通過參數進行傳遞,更可以做為方法傳回值類型和屬性類型。
又由于委托在本質上儲存的是方法指針(在儲存方法指針的同時,如果是執行個體化方法、還會儲存其對象的引用,如果是靜态方法
也會儲存其類型),是以委托還可以像方法那麼進行調用,可以有參數,也可以有傳回值。
多點傳播委托,可以儲存多個方法指針。
事件由event關鍵字進行定義,我通常把它看作一種通訊機制、而不是類型。事件可以算作是委托的兄弟。
委托加上event關鍵字後,就會變成事件。
事件不可以做像委托那樣通過參數進行傳遞,不能做為方法傳回值類型和屬性類型,卻可以像委托那樣以類似于方法的形式進行
調用。隻是事件隻能在本類型内部觸發、而委托卻沒有此限制條件。
事件可以用 virtual、sealed、abstract關鍵字進行修飾、而字段和委托是不可以使用前面那些關鍵字的。通過使用 virtual
關鍵字,可以将事件标記為虛拟事件。這樣,派生類就可以通過使用 override關鍵字來重寫事件行為。
事件儲存的是委托(可以儲存多個),委托儲存的是方法指針(可以儲存多個)。
【語錄】
委托是一種類型,可以做為參數和傳回值進行傳遞,其本質上儲存的為方法指針。
事件是一種通訊機制,而不是類型。其可以用 virtual、sealed、abstract關鍵字進行修飾、而字段和委托不可以。
傳回導讀目錄,閱讀更多随筆
分割線,以下為部落格簽名:
軟體臭蟲情未了
- 編碼一分鐘
- 測試十年功
随筆如有錯誤或不恰當之處、為希望不誤導他人,望大俠們給予批評指正。