event (C# 參考)

event 關鍵字用於在發行者 (Publisher) 類別中宣告事件。

範例

下列範例會示範如何宣告及引發使用 EventHandler 當做基礎委派型別的事件。 如需取得示範如何使用泛型 EventHandler<TEventArgs> 委派型別,以及如何訂閱事件並建立事件處理常式方法的完整程式碼範例,請參閱 HOW TO:發行符合 .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# 程式設計手冊)

事件可以標記為 publicprivateprotectedinternal 或 protected internal。 這些存取修飾詞將定義類別使用者如何存取事件。 如需詳細資訊,請參閱存取修飾詞 (C# 程式設計手冊)

關鍵字和事件

下列關鍵字會套用到事件上。

關鍵字

描述

如需詳細資訊

static

讓呼叫端可以隨時使用該事件,即使沒有類別的執行個體 (Instance) 也一樣。

靜態類別和靜態類別成員 (C# 程式設計手冊)

virtual

可讓衍生類別 (Derived Class) 使用 override 關鍵字覆寫事件行為。

繼承 (C# 程式設計手冊)

sealed

指定對於衍生類別而言,它不再是虛擬。

 

abstract

編譯器將不會產生 add 和 remove 事件存取子 (Accessor) 區塊,因此,衍生類別必須提供自己的實作 (Implementation)。

 

您可以使用 static 關鍵字,將事件宣告為靜態事件。 這讓呼叫端即使沒有類別的執行個體,也可以隨時使用事件。 如需詳細資訊,請參閱靜態類別和靜態類別成員 (C# 程式設計手冊)

您可以使用 virtual 關鍵字,將事件標記為虛擬事件。 如此一來,衍生類別便可以使用 override 關鍵字來覆寫事件行為。 如需詳細資訊,請參閱繼承 (C# 程式設計手冊)。 覆寫虛擬事件的事件也可以是 sealed 事件,這樣便會指定該事件對衍生類別而言將不再是虛擬的。 最後,事件可以宣告為 abstract,這表示編譯器將不會產生 add 和 remove 事件存取子區塊。 因此,衍生類別必須提供自己的實作。

C# 語言規格

如需詳細資訊,請參閱 C# 語言規格。 語言規格是 C# 語法和用法的決定性來源。

請參閱

工作

HOW TO:組合委派 (多點傳送委派) (C# 程式設計手冊)

參考

C# 關鍵字

add (C# 參考)

remove (C# 參考)

修飾詞 (C# 參考)

概念

C# 程式設計手冊

其他資源

C# 參考