论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
应用中心
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com技术社区
»
论坛
›
软件与程序人生
›
后端开发
›
.Net
›
C#事件
C#事件
鼠扑
论坛元老
|
2024-5-19 22:51:08
|
显示全部楼层
|
阅读模式
楼主
主题
2027
|
帖子
2027
|
积分
6081
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
C#事件
概述
定义
类或对象可以通过事件向其他类或对象通知发生的相关事情。
发送(或引发)事件的类称为“发布者”,接收(或处置惩罚)事件的类称为“订阅者”。
事件是一种特殊的多播委托,是委托实例变量,
事件只能在类的内部定义,只能从声明它的类中举行调用
。 外部只能订阅和取消订阅事件。
事件的组成部分
C#事件由以下三个部分组成:
事件发布者:定义事件的对象。事件发布者负责触发事件并通知订阅者。
事件参数:事件发生时需要通报的信息。事件参数可以是任何类型的对象。如果事件不需要通报参数,则可以使用 EventArgs 类。
事件订阅者:订阅事件的对象。事件订阅者会在事件发生时实行相应的操纵。
基本语法
【
发布者
】事件声明
public event 委托类型 事件名;
public event DelBtnClick OnBtnClick;
复制代码
【
订阅者
】事件订阅 +=,取消订阅-=
var page = new Page();
page.OnBtnClick +=Page_OnBtnClick;
private static void Page_OnBtnClick(ClickEventArgs eventArgs)
{
MessageBox.Show($"客户端,按钮点击后回调 eventArgs:{eventArgs.ClickCount}");
}
复制代码
【
发布者
】事件触发。其中new ClickEventArgs(1) 为回传给订阅者的自定义事件参数
OnBtnClick?.Invoke(new ClickEventArgs(1));//触发事件时 把事件参数传递给订阅者。
复制代码
【
发布者
】自定义事件参数。 继续 EventArgs
public class ClickEventArgs : EventArgs
{
public ClickEventArgs(int clickCount)
{
ClickCount = clickCount;
}
public int ClickCount { get; private set; }
}
复制代码
常见用法/应用场景
事件的优点
松耦合:事件发布者和订阅者之间是松耦合的,这意味着它们不需要知道相互的内部实现细节。这使得代码更易于维护和扩展。
可扩展性:事件可以支持多个订阅者,这使得代码易于扩展以支持新的功能。
异步性:事件是异步的,这意味着事件订阅者可以在事件发生时实行任何操纵,而不会阻塞事件发布者。
事件的应用示例
事件的缺点
性能开销性能: 事件会带来一些性能开销,由于需要维护事件处置惩罚步伐列表,因此应尽量避免频繁触发事件。
复杂性: 事件可能会使代码更加复杂,尤其是当涉及到多个事件和处置惩罚步伐时
事件安全:事件处置惩罚步伐通常在不同的线程上实行,因此需要考虑线程安全题目。
事件滥用:避免过度使用事件,否则会导致代码难以维护。
常见的应用场景
GUI编程:事件通常用于响应用户交互,比方按钮单击、文本框输入等。
网络编程:事件可用于通知应用步伐有关网络运动的事件,比方连接创建、数据接收等。
系统编程:事件可用于通知应用步伐有关系统运动的事件,比方进程启动、设备连接等。
竣事语言
C# 事件是一种强大的机制,可用于实现松耦合、可扩展和可重用的代码。但是,事件也可能会带来一些性能开销和复杂性。
引用
博文示例代码 https://github.com/chi8708/DotNetNote/blob/master/Note.Basic/05event.cs
参考文献
使用事件- C# 编程指南 - Microsoft Learn:
https://learn.microsoft.com/zh-cn/dotnet/csharp/programming-guide/events/
C# 中的委托和事件(详解):
https://www.cnblogs.com/jimmyzhang/archive/2007/09/23/903360.html
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复
使用道具
举报
0 个回复
正序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
发新帖
回复
鼠扑
论坛元老
这个人很懒什么都没写!
楼主热帖
Java 基于Apache POI实现Excel读写操作 ...
XAF新手入门 - 类型子系统(Types Info ...
Dapr 知多少 | 分布式应用运行时 ...
springboot开启单元测试的方法分享 ...
记录一次NoSuchMethodError问题的解决 ...
5.15日 搭建青龙面板教程——狗东跑跑 ...
C#生成putty格式的ppk文件(支持passph ...
Python 封装SNMP调用接口
风险洞察之事件总线的探索与演进 ...
SQLSERVER大小写转换方法
标签云
集成商
AI
运维
CIO
存储
服务器
浏览过的版块
Java
登录参与点评抽奖加入IT实名职场社区
下次自动登录
忘记密码?点此找回!
登陆
新用户注册
用其它账号登录:
关闭
快速回复
返回顶部
返回列表