c 事件為何要繼承EventArgs

2022-03-15 17:57:27 字數 743 閱讀 3487

1:繼承eventargs是表示該類可作為事件,刪掉了就預設繼承object,沒人會說你錯 ----就是說事件不繼承eventargs 也沒有錯,也能正常運用,那麼繼承他的意義是什麼呢?看2,3。 覺得3的解釋讓我知道為什麼,回過頭再看2就明白很多了...

2:至於為什麼要繼承 eventargs,這是 .net 框架的約定。從軟體工程的角度,無論你使用 mfc、windows api、.net framework、還是什麼庫,和系統類庫保持一致的編碼風格,使得你新增的**成為核心**的自然延續都是首推的最佳實踐。

3:不妨看一下最常見的click事件

private void button1_click(object sender, eventargs e)...

微軟為什麼不把eventargs寫成int或string?因為他在定義事件的時候不能確定事件所需引數的確切型別。所以抽象出乙個型別。那直接寫成object不也可以嗎?完全可以,但是兩個object引數放到一塊會不會有些小迷茫呢,所以微軟專門建立了這麼乙個類。從這點來說,eventargs更像一種命名規範,任何人看到它都會知道它包含事件資料。這樣當你想改變事件引數的個數或型別時,只要自定義乙個封裝了任意你喜歡的個數和型別的引數,並繼承eventargs的類即可。這樣不是挺靈活的嗎?對於效能當然不會有什麼影響了,它只是個引數型別,而且它本身不包含任何事件資料。

-------一句話,eventargs更像一種命名規範, 程式設計的一種系統庫提供的一種約定規則,我們自己寫的**,也按照這個規則來,方便別人理解你寫的**的意圖。

C 事件的繼承

有下面一段 目的是實現事件的繼承 基類 public class basebusiness 派生類 public class mybusiness basebusiness 編譯時提示如下錯誤 事件 basebusiness.progressevent 只能出現在 或 的左邊 從型別 basebus...

C 事件的繼承

有下面一段 目的是實現事件的繼承 基類 public class basebusiness 派生類 public class mybusiness basebusiness 編譯時提示如下錯誤 事件 basebusiness.progressevent 只能出現在 或 的左邊 從型別 basebus...

C 事件的繼承

c 事件的繼承 有下面一段 目的是實現事件的繼承 基類 public class basebusiness 派生類 public class mybusiness basebusiness 編譯時提示如下錯誤 事件 basebusiness.progressevent 只能出現在 或 的左邊 從型別...