
- C# 基礎教程
- C# - 首頁
- C# - 概述
- C# - 環境
- C# - 程式結構
- C# - 基本語法
- C# - 資料型別
- C# - 型別轉換
- C# - 變數
- C# - 常量
- C# - 運算子
- C# - 決策機制
- C# - 迴圈
- C# - 封裝
- C# - 方法
- C# - 可空型別
- C# - 陣列
- C# - 字串
- C# - 結構體
- C# - 列舉
- C# - 類
- C# - 繼承
- C# - 多型
- C# - 運算子過載
- C# - 介面
- C# - 名稱空間
- C# - 預處理器指令
- C# - 正則表示式
- C# - 異常處理
- C# - 檔案 I/O
C# - 事件
事件是使用者操作,例如按鍵、點選、滑鼠移動等,或某些事件,例如系統生成的通知。應用程式需要在事件發生時做出響應。例如,中斷。事件用於程序間通訊。
使用委託與事件
事件在一個類中宣告和引發,並使用同一個類或其他類中的委託與事件處理程式關聯。包含事件的類用於釋出事件。這稱為釋出者類。接受此事件的其他類稱為訂閱者類。事件使用釋出者-訂閱者模型。
釋出者是一個包含事件定義和委託的物件。事件-委託關聯也在此物件中定義。釋出者類物件呼叫事件,並將其通知給其他物件。
訂閱者是一個接受事件並提供事件處理程式的物件。釋出者類中的委託呼叫訂閱者類的方法(事件處理程式)。
宣告事件
要在類內宣告事件,首先必須為事件宣告一個委託型別,例如:
public delegate string BoilerLogHandler(string str);
然後,使用event關鍵字宣告事件:
event BoilerLogHandler BoilerEventLog;
上面的程式碼定義了一個名為BoilerLogHandler的委託和一個名為BoilerEventLog的事件,當它被引發時會呼叫委託。
示例
using System; namespace SampleApp { public delegate string MyDel(string str); class EventProgram { event MyDel MyEvent; public EventProgram() { this.MyEvent += new MyDel(this.WelcomeUser); } public string WelcomeUser(string username) { return "Welcome " + username; } static void Main(string[] args) { EventProgram obj1 = new EventProgram(); string result = obj1.MyEvent("Tutorials Point"); Console.WriteLine(result); } } }
編譯並執行上述程式碼後,將產生以下結果:
Welcome Tutorials Point
廣告