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
C语言
- C# 类与对象:面向对象编程的基石
- 理解 C# 访问修饰符:public、private、protected、internal 等完全指南
- C# static 关键字:静态变量、方法与类完全掌握
- 掌握 C# 抽象类与抽象方法:实战指南
- 理解 C# 嵌套类:定义、访问与继承实战
- 理解 C# 分部类与分部方法
- 掌握 C# sealed 类与方法:用法、示例与代码安全性能提升
- C++多态实战指南:虚函数、动态绑定与纯虚函数
- C++数据抽象实战:接口与实现分离的设计艺术
- C++数据封装:守护代码安全的核心机制
- C# 程序结构解析:从 Hello World 看命名空间、类、Main 入口与编译运行
- C# 基础语法与面向对象核心:类、成员、实例化、标识符与关键字