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
廣告