事件是用户操作,例如按键,点击,鼠标移动等,或某些事件,例如系统生成的通知.应用程序需要在事件发生时对其进行响应.例如,中断.事件用于进程间通信.
使用具有事件的委托
事件在类中声明和引发并与事件处理程序关联在同一个类或其他类中使用委托.包含事件的类用于发布事件.这称为发布商类.接受此事件的其他一些类称为订户类.事件使用 publisher-subscriber 模型.
发布者是一个对象,其中包含事件和委托的定义.事件委托关联也在此对象中定义.发布者类对象调用该事件,并将其通知给其他对象.
订阅者是一个接受该事件并提供事件处理程序的对象.发布者类中的委托调用订阅者类的方法(事件处理程序).
声明事件
要在类中声明事件,首先,必须声明事件的委托类型.例如,
public delegate string MyDel(string str);
接下来,使用事件关键字声明事件本身 :
event MyDel MyEvent;
前面的代码定义了一个名为 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