2010-09-02 46 views

回答

19

是的,您可以通過部分方法獲得與事件類似的效果。部分方法實際上只是讓代碼生成器(主要是設計者)爲未生成的代碼生成鉤子的一種方式。事件可以填補這個角色。

但是存在要特別

交換事件局部方法
  • 偏方法調用被完全從所生成的IL去除,如果沒有實現的優點。這不能用事件來完成。
  • 部分方法的設計是爲了解決1個鉤子和1個消費者提供者的問題。事件旨在模擬1個提供商與N個消費者,並有這樣的設計帶來的開銷
  • 沒有排序的問題(誰先走了)。有了事件,您需要確保在設計器生成引發事件的代碼之前,訂閱該事件的代碼纔會運行。如果說設計者生成一個構造函數,這並不總是可能的。部分方法沒有這樣的問題。
2

它們不是「需要」的,但是適用於大規模應用。廣泛使用事件會導致Smart UI反模式,其中業務邏輯與用戶界面緊密結合,而部分功能則可讓您更好地分離您的疑慮。

以下是關於部分方法的MSDN C#編程指南的鏈接。 http://msdn.microsoft.com/en-us/library/wa80x488.aspx

2

如果沒有實現,編譯器將刪除對部分方法的調用。使用事件的替代方法,監聽器必須在運行時檢查(它們也需要存儲等)。這允許部分方法更高效,特別是當有許多潛在的「事件」時,只有少數人有「聽衆」註冊時。

0

部分方法是在編譯時定義的,運行時的事件。所以他們是不同的東西。

分部方法被帶到圖片擴展,你有過(框架或自動生成的一部分)沒有控制

希望這有助於

現有類
相關問題