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

C#学习系列之事件

C#学习系列之事件

  • 前言
  • 事件
    • 发布者和订阅者
    • 事件触发和注册
    • 事件声明
    • 事件订阅
    • 事件触发
    • 使用
  • 总结


前言

基础学习。

事件

发布者和订阅者

发布者:通知某件事情发生的。
订阅者:对某件事情关注的。

事件触发和注册

触发:事件发生就通知所有关注该事件的订阅者。
注册:想要得到通知,必须注册并关注。

事件发生时,通知订阅者,调用订阅者的注册函数。

事件声明

delegate void Handler();
public event Handler NewDog;//NewDog是一个成员,会被隐式自动初始化为null
//这里的Handler为委托类型,NewDog为事件名
//这里常会出现问题,应该注意!!!

事件订阅

NewDog+=方法
NewDog-=方法
//方法可以是实例方法、静态方法、匿名方法、lambda表达式

事件触发

封装的受限制的委托。

if(NewDog!=null)
{NewDog();}

使用

public class Dog:Pet
{static int Num;public delegate void Handler();public static event Handler NewDog;static Dog(){Num=0;}public Dog(string name):base(name){++Num;if(NewDog!=null){NewDog();}}
}
class Client
{public void WantADog(){Console.WriteLine("xx");}
}Client c1=new Client();
Client c2=new Client();
Dog.NewDog+=c1.WantADog;//相当于把Client的方法赋给事件了
Dog.NewDog+=c2.WantADog;
Dog dog=new Dog("Q");//最后事件打印出来会显示xx

总结

学习记录。
https://www.imooc.com/video/14246/0

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

相关文章:

  • list部分接口模拟实现(c++)
  • 数据结构(C语言) 实验-栈与字符串
  • xLua Lua访问C#注意事项(七)
  • vue3+antv2.x的画布
  • Docker部署ubuntu1804镜像详细步骤
  • mac 卸载第三方输入法
  • 可观察性在软件测试中的重要性
  • Delphi TCP服务端监听端口获取客户端RFID网络读卡器上传的刷卡数据
  • javaSE学习笔记(一)概述、语法
  • 接口开发之使用C#插件Quartz.Net定时执行CMD任务工具
  • XSS脚本(存储型xss获取肉鸡的cookies)
  • 【React】04.MVC模式和MVVM模式
  • 调试代码0
  • 【C++心愿便利店】No.12---C++之探索string底层实现
  • Android Studio(列表视图ListView)
  • 让深度神经网络绘画以了解它们是如何工作的
  • https://www.jianshu.com/p/34bf240b85a9
  • 如何导出PPT画的图为高清图片?插入到world后不压缩图像的设置方法?
  • 【Spring】Spring IOC DI
  • 一招解密网络流量瓶颈!
  • 某校帮签到小程序m 加密参数解析
  • Node.js |(六)express框架 | 尚硅谷2023版Node.js零基础视频教程
  • 包教包会:Mysql主从复制搭建
  • Subset Selection
  • 【测开求职】面试题:计算机网络 精简版整理
  • 设计模式-代理模式(delegate)
  • MongoDB 安装与配置
  • rabbitMq创建交换机,以及路由键绑定队列教程
  • odoo16前端框架源码阅读——ormService.js
  • 详谈滑动窗口算法与KMP算法区别以及二者在什么场景下使用