- C# 基础教程
- C# - 首页
- C# - 概述
- C# - 环境
- C# - 程序结构
- C# - 基本语法
- C# - 数据类型
- C# - 类型转换
- C# - 变量
- C# - 常量
- C# - 运算符
- C# - 决策机制
- C# - 循环
- C# - 封装
- C# - 方法
- C# - 可空类型
- C# - 数组
- C# - 字符串
- C# - 结构体
- C# - 枚举
- C# - 类
- C# - 继承
- C# - 多态
- C# - 运算符重载
- C# - 接口
- C# - 命名空间
- C# - 预处理器指令
- C# - 正则表达式
- C# - 异常处理
- C# - 文件 I/O
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
广告