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