event (C# 參考)
event 關鍵字用於在發行者 (Publisher) 類別中宣告事件。
範例
下列範例會示範如何宣告及引發使用 EventHandler 當做基礎委派型別的事件。 如需取得示範如何使用泛型 EventHandler 委派型別,以及如何訂閱事件並建立事件處理常式方法的完整程式碼範例,請參閱 如何:發行符合 .NET Framework 方針的事件 (C# 程式設計手冊)。
public class SampleEventArgs
{
public SampleEventArgs(string s) { Text = s; }
public String Text {get; private set;} // readonly
}
public class Publisher
{
// Declare the delegate (if using non-generic pattern).
public delegate void SampleEventHandler(object sender, SampleEventArgs e);
// Declare the event.
public event SampleEventHandler SampleEvent;
// Wrap the event in a protected virtual method
// to enable derived classes to raise the event.
protected virtual void RaiseSampleEvent()
{
// Raise the event by using the () operator.
if (SampleEvent != null)
SampleEvent(this, new SampleEventArgs("Hello"));
}
}
事件是特殊種類的多點傳送委派,只能從宣告它們的類別或結構 (Struct) 內叫用 (即 Publisher 類別)。 如果其他類別或結構訂閱該事件,則當 Publisher 類別引發該事件時,會叫用它們的事件處理常式方法。 如需詳細資訊與程式碼範例,請參閱事件 (C# 程式設計手冊) 和委派 (C# 程式設計手冊)。
事件可以標記為 public、private、protected、internal 或 protected internal。 這些存取修飾詞將定義類別使用者如何存取事件。 如需詳細資訊,請參閱 存取修飾詞 (C# 程式設計手冊)。
關鍵字和事件
下列關鍵字會套用到事件上。
Keyword |
描述 |
如需詳細資訊 |
---|---|---|
讓呼叫端可以隨時使用該事件,即使沒有類別的執行個體 (Instance) 也一樣。 |
||
可讓衍生類別 (Derived Class) 使用 override 關鍵字覆寫事件行為。 |
||
指定對於衍生類別而言,它不再是虛擬。 |
|
|
編譯器將不會產生 add 和 remove 事件存取子 (Accessor) 區塊,因此,衍生類別必須提供自己的實作 (Implementation)。 |
|
您可以使用 static 關鍵字,將事件宣告為靜態事件。 這讓呼叫端即使沒有類別的執行個體,也可以隨時使用事件。 如需詳細資訊,請參閱 靜態類別和靜態類別成員 (C# 程式設計手冊)。
您可以使用 virtual 關鍵字,將事件標記為虛擬事件。 如此一來,衍生類別便可以使用 override 關鍵字來覆寫事件行為。 如需詳細資訊,請參閱 繼承 (C# 程式設計手冊)。 覆寫虛擬事件的事件也可以是 sealed 事件,這樣便會指定該事件對衍生類別而言將不再是虛擬的。 最後,事件可以宣告為 abstract,這表示編譯器將不會產生 add 和 remove 事件存取子區塊。 因此,衍生類別必須提供自己的實作。
C# 語言規格
如需詳細資訊,請參閱<C# 語言規格>。語言規格是 C# 語法及用法的限定來源。