.NET 類別庫常提供兩種方式讓衍生類別回應系統事件:
OnMouseDown)MouseDown += ...)雖然兩者皆可達成目的,但適用情境截然不同。
public class MyForm : Form
{
protected override void OnMouseDown(MouseEventArgs e)
{
try {
HandleMouseDown(e);
} catch (Exception ex) {
// 特定錯誤處理
}
// 必須呼叫基類實作,確保事件鏈上的其他處理常式被調用
base.OnMouseDown(e);
}
}
核心優勢:
事件專為外部消費者設計。例如:表單處理按鈕點擊(Button.Click),按鈕觸發事件、表單訂閱處理。若每個按鈕都建立衍生類別覆寫 OnClick,程式碼膨脹嚴重。事件提供:
衍生類別內部:優先覆寫虛擬函式(正確性、效能、可維護性最佳)。
外部物件回應:使用事件機制(鬆散耦合、動態彈性、多播需求)。