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