首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

C# 事件宣告語法全解:修飾詞、存取器與抽象事件規範

     編輯:關於C#

事件宣告完整語法

[attributes] [event-modifiers] event 委派型別 事件名稱
    [ { add { ... } remove { ... } } ];

事件修飾詞對照表

修飾詞說明互斥限制
new遮蔽基類別同名事件無
public/protected/internal/private存取層級單一
static靜態事件,屬於類別不可與 virtual/override/abstract 共存
virtual允許衍生類別 override不可與 static/override/abstract 共存
override覆寫基類別 virtual 事件不可與 static/virtual/abstract 共存
sealed禁止進一步 override需配合 override
abstract強制衍生類別實作不可與 static/virtual/override 共存;不可提供存取器實作

抽象事件特殊規則

  • 宣告時不可提供存取器區塊,否則編譯錯誤(CS0547)。
  • 衍生類別必須使用 override 實作完整存取器或依賴編譯器自動產生。
  • 抽象類別可包含抽象事件,介面也可宣告事件(隱含 abstract)。

委派型別需求

  • 事件型別必須是委派型別(delegate 關鍵字宣告)。
  • 慣用 EventHandler 或 EventHandler<TEventArgs>。
  • 自訂委派需符合 void DelegateName(object sender, TEventArgs e) 簽章慣例。

一次宣告多個事件

public event EventHandler Click, DoubleClick, MouseDown;
// 等同於分別宣告三個事件,共用同一委派型別

編譯器自動產生的預設實作

若省略存取器,編譯器會產生:

  • 私有委派欄位 _eventName。
  • 同步化的 add/remove 存取器(使用 lock(this) 或 Interlocked.CompareExchange)。

常見錯誤代碼對照

錯誤碼原因修正
CS0067事件從未被引發加入引發邏輯或標記 #pragma warning disable 67
CS0547抽象事件提供存取器實作移除存取器區塊
CS0111重複宣告同名事件檢查基類別是否已宣告,使用 new/override
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved