当前位置: 首页 > news >正文

C# 事件知识文档

C# 事件知识文档

概述

在 C# 中,事件(Event) 是一种特殊的机制,它基于委托实现,用于支持发布-订阅模式。事件允许对象在发生特定操作时通知其他对象,而无需直接引用这些对象。这种机制非常适合于实现诸如用户界面交互、状态变化通知等场景。


核心概念
  1. 发布者(Publisher):定义和触发事件的对象。
  2. 订阅者(Subscriber):注册并响应事件的对象。
  3. 事件处理器(EventHandler):当事件被触发时执行的代码块。

事件的工作流程
  1. 定义事件:在发布者类中定义一个事件。
  2. 触发事件:在适当的时候触发该事件。
  3. 订阅事件:订阅者通过订阅事件来接收通知,并提供事件处理器。
  4. 处理事件:当事件被触发时,所有已注册的事件处理器都会被执行。

事件的思维导图

在这里插入图片描述

事件的基本语法
定义事件
public delegate void MyEventHandler(object sender, EventArgs e);
public event MyEventHandler MyEvent;

这里,MyEventHandler 是一个委托类型,MyEvent 是基于此委托类型的事件。

触发事件

使用空合并运算符简化触发事件的代码:

MyEvent?.Invoke(this, EventArgs.Empty);
订阅事件

通过 += 运算符订阅事件,并提供相应的事件处理器:

publisher.MyEvent += HandleMyEvent;void HandleMyEvent(object sender, EventArgs e)
{Console.WriteLine("Event triggered!"

相关文章:

  • Vue2 el-checkbox 虚拟滚动解决多选框全选卡顿问题 - 高性能处理大数据量选项列表
  • 如何给文件增加拓展名
  • 1️⃣5️⃣three.js_GUI辅助调试器
  • Qt进阶开发:鼠标及键盘事件
  • AOSP Android14 Launcher3——RectFSpringAnim窗口动画类详解
  • ComfyUI+Sonic实战,三步实现图片开口说话
  • 单个或批量实现-提取PDF文档中的合同号和姓名并按“合同号_姓名”格式重命名文件。
  • 【文献分享】Model-based evaluation提供了数据和代码
  • day48—双指针-通过删除字母匹配到字典最长单词(LeetCode-524)
  • rk3568main.cc解析
  • 多路转接select服务器
  • Node.js简介(nvm使用)
  • docker-compose搭建kafka
  • Git Flow分支模型
  • L2-2、示范教学与角色扮演:激发模型“模仿力“与“人格“
  • 从单模态到多模态:深度生成模型的演进历程
  • 【武汉理工大学第四届ACM校赛】copy
  • EAL4+与等保2.0:解读中国网络安全双标准
  • 用 Go 优雅地清理 HTML 并抵御 XSS——Bluemonday
  • 嵌入式---超声波测距模块
  • 游客大理古城买瓜起争执:170克手机称出340克
  • “80后”师虎已任陕西旬邑县委书记
  • 金发科技去年净利增160%,机器人等新领域催生材料新需求
  • 三博脑科跌超10%:董事长遭留置立案,称控制权未变化,经营秩序正常
  • 4月语言学联合书单|法庭审判话语的态度表达及人际功能研究
  • 智飞生物一季度营收下滑79%,连续三个季度亏损,称业绩波动与行业整体趋势一致