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

【C#补全计划】事件

一、事件的概念

1. 事件是基于委托的存在,是委托的安全包裹,让委托的使用更具有安全性

2. 事件是一种特殊的变量类型

二、事件的使用

1. 语法:event 委托类型 事件名;

2. 使用:

        (1)事件是作为成员变量存在与类中

        (2)委托怎么用,事件就怎么用

3. 事件与委托的区别:事件不能在类外部赋值和调用

4. 只能作为成员变量存在与类和接口以及结构体中

5. 代码:

using System;namespace Event
{class Program{static void Main(string[] args){Test test = new Test();// 委托可以在外部赋值test.action = fun;test.action += fun;test.action -= fun;// 事件不能在外部赋值// test.myEvent = fun(); 编译报错:事件不能在外部赋值test.myEvent += fun; // 但是可以添加、移除函数test.myEvent -= fun;// 委托可以在外部调用test.action.Invoke();// 事件不能在外部调用// test.myEvent.Invoke(); 编译报错:事件不能在外部调用test.doEvent(); // 但是可以在内部封装调用}static void fun(){Console.WriteLine("调用fun()");}}class Test{// 创建委托成员变量,用于存储函数public Action action;// 创建事件成员变量,用于存储函数public event Action myEvent;public void doEvent(){Console.WriteLine("调用doEvent()");if(myEvent != null)myEvent.Invoke();}}
}

运行结果如下:

三、事件的作用

1. 防止外部随意置空委托

2. 防止外部随意调用委托

3. 事件相当于对委托进行了一次封装,使其更加安全

http://www.lryc.cn/news/622442.html

相关文章:

  • PCA降维理论详解
  • 学习嵌入式之硬件——I2C
  • 系统介绍pca主成分分析算法
  • C语言:指针(5)
  • 智能指针:C++内存管理的利器
  • c++程序示例:多线程下的实例计数器
  • [HDCTF 2023]Normal_Rsa(revenge)
  • 主流开源实时互动数字人大模型
  • 读书笔记-积极心理学 《心流,最优体验心理学》
  • 条件变量的基本介绍与有界缓冲区问题
  • 小红书帖子评论的nodejs爬虫脚本
  • 补充日志之-配置文件解析指南(Centos7)
  • CAXA电子图板2026(国产CAD之光)
  • 机器学习之PCA
  • pyqt5无法显示opencv绘制文本和掩码信息
  • OpenCV 阈值处理
  • 应用侧华为云LoTDA设备接入平台
  • 重塑工业设备制造格局:明远智睿 T113-i 的破局之道
  • IgH初始化--未接从站
  • 【160页PPT】机械行业数字化生产供应链产品解决方案(附下载方式)
  • 光伏工单智能管理,故障处理快人一步
  • 状态流程框架(cola-component-statemachine)
  • WinForm 简单用户登录记录器实现教程
  • 五、ZooKeeper、Kafka、Hadoop、HBase、Spark、Flink集群化软件的部署
  • Sui 主网升级至 V1.53.2
  • 【DDIA】第三部分:衍生数据
  • 俄罗斯信封套娃问题-二维最长递增子序列
  • day29-进程和线程(2)
  • python自学笔记9 Seaborn可视化
  • 47.分布式事务理论