天天看點

委托和事件

委托和事件是什麼呢,他們之間有什麼異同呢?

委托由delegate關鍵字進行定義,它是一種特殊的類型。

委托可以像其他類型那樣進行定義,也可以像其他類型那樣通過參數進行傳遞,更可以做為方法傳回值類型和屬性類型。

又由于委托在本質上儲存的是方法指針(在儲存方法指針的同時,如果是執行個體化方法、還會儲存其對象的引用,如果是靜态方法

也會儲存其類型),是以委托還可以像方法那麼進行調用,可以有參數,也可以有傳回值。

多點傳播委托,可以儲存多個方法指針。

事件由event關鍵字進行定義,我通常把它看作一種通訊機制、而不是類型。事件可以算作是委托的兄弟。

委托加上event關鍵字後,就會變成事件。

事件不可以做像委托那樣通過參數進行傳遞,不能做為方法傳回值類型和屬性類型,卻可以像委托那樣以類似于方法的形式進行

調用。隻是事件隻能在本類型内部觸發、而委托卻沒有此限制條件。

事件可以用  virtual、sealed、abstract關鍵字進行修飾、而字段和委托是不可以使用前面那些關鍵字的。通過使用 virtual

關鍵字,可以将事件标記為虛拟事件。這樣,派生類就可以通過使用 override關鍵字來重寫事件行為。

事件儲存的是委托(可以儲存多個),委托儲存的是方法指針(可以儲存多個)。

【語錄】

委托是一種類型,可以做為參數和傳回值進行傳遞,其本質上儲存的為方法指針。

事件是一種通訊機制,而不是類型。其可以用 virtual、sealed、abstract關鍵字進行修飾、而字段和委托不可以。

傳回導讀目錄,閱讀更多随筆

分割線,以下為部落格簽名:

軟體臭蟲情未了

  • 編碼一分鐘
  • 測試十年功

随筆如有錯誤或不恰當之處、為希望不誤導他人,望大俠們給予批評指正。