当前位置: 首页 > 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.xdnf.cn/news/1302895.html

相关文章:

  • 【2D】圆上数值积分(半径方向用高斯积分减少点数)
  • 综合案例:Python 函数知识整合 — 学生成绩管理系统
  • Python 类(Class)学习
  • 【新手入门】Android基础知识(一):系统架构
  • 【Golang】:流程控制语句
  • 【Vibe Coding 工程之 StockAnalyzerPro 记录】- EP1.先写 PRD
  • 【秋招笔试】2025.08.15饿了么秋招机考-第一题
  • P4069 [SDOI2016] 游戏 Solution
  • 微信小程序 拖拽签章
  • Git版本控制器
  • spring中异步任务注解@Async和@scheduled的使用
  • 2025年机械制造、机器人与计算机工程国际会议(MMRCE 2025)
  • Docker Compose 入门教程
  • MySQL、PolarDB、PolarDB-X、TableStore、MongoDB、TiDB、ClickHouse选型
  • docker入门
  • Java 调用 Python 脚本:实现 HelloWorld
  • 计算机视觉(opencv)实战五——图像平滑处理(均值滤波、方框滤波、高斯滤波、中值滤波)附加:视频逐帧平滑处理
  • 从根本上解决MAC权限问题(关闭sip)
  • SSL和TLS协议的消息认证码(MAC)
  • Android RxJava变换操作符详解
  • 使用SQLALCHEMY的outerjoin时的bug
  • 训练大模型的前提:数据治理工程:从原始数据到高质量语料的系统化治理实践
  • vector接口模拟实现及其原理
  • Redis 官方提供免费的 30 MB 云数据库
  • 阿里云出里两款新的云服务器
  • Uniapp之微信小程序自定义底部导航栏形态
  • 订单簿数据智能解析深度学习算法筛选大单并预测即时价格变动
  • MuMu模拟器Pro Mac 安卓手机平板模拟器(Mac中文)
  • 智能家居【home assistant】(二)-集成xiaomi_home
  • 云原生俱乐部-k8s知识点归纳(3)