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

网站的相关链接怎么做今日要闻新闻

网站的相关链接怎么做,今日要闻新闻,东莞网站推广团队,产品网站做营销推广前言 在C#中,事件(Event)可以实现当类内部发生某些特定的事情时,它可以通知其他类或对象。事件是基于委托(Delegate)的,委托是一种类型安全的函数指针,它定义了方法的类型&#xff…

前言

在C#中,事件(Event)可以实现当类内部发生某些特定的事情时,它可以通知其他类或对象。事件是基于委托(Delegate)的,委托是一种类型安全的函数指针,它定义了方法的类型,使得可以将方法作为参数进行传递。

事件包含以下一些基本概念:
委托(Delegate):定义了一个方法的类型,使得可以将方法作为参数传递。
事件(Event):基于委托的,用于在类或对象之间提供通知的机制。
事件处理器(Event Handler):是一个符合特定签名的方法,用于响应事件。

1、如何定义事件

定义事件
首先,你需要定义一个委托,然后基于这个委托来声明一个事件。
下面这个委托MyEventHandler有两个参数,第一个参数是object类型,第二个参数是TempEventArgs类型,TempEventArgs这个类型是我自己定义的,继承于EventArgs。

 public delegate void MyEventHandler(object sender, TempEventArgs e);//声明一个委托
public class TempEventArgs : EventArgs{public double Temp { get; set; }public TempEventArgs(double temp){this.Temp = temp;}}

然后定义一个包含事件的类如下:

  //定义一个类,这个类包含一个事件,这个类也称为目标类class Thermostat{//声明事件public event MyEventHandler MyEventHandlerEvent = delegate { };//空委托,这样我们就不用在调用事件时先进行null值判断了。private double _CurrentTemperature;public double CurrentTemperature{get{return _CurrentTemperature;}set{if (value != CurrentTemperature){_CurrentTemperature = value;MyEventHandlerEvent?.Invoke(this, new TempEventArgs(CurrentTemperature));//触发事件}}}}

上面的Thermostat类中定义了一个MyEventHandlerEvent事件,事件由event修饰,基于MyEventHandler这个委托类型。并且通过属性CurrentTemperature的值的改变来触发事件,事件触发时其实就是调用委托,并且给委托传递了两个参数,第一个参数是Thermostat对象,第二个参数是将改变后的温度传入TempEventArgs类型的对象。

2、订阅和取消订阅事件

其他类或对象可以通过+=操作符来订阅事件,通过-=操作符来取消订阅事件,比如Cooler这个类就是一个需要订阅事件的其他类,这个类包含了一个事件处理器TemperatureChanged,当订阅事件以后,当事件触发以后,就会根据事件做出相应的处理。

 /// <summary>/// 这个类称为观察者类/// </summary>class Cooler{public Cooler(double temperature){this.Temperature = temperature;}public double Temperature { get; set; }//温度阈值//事件处理器public void TemperatureChanged(object sender, TempEventArgs tempEventArgs){double temperature = tempEventArgs.Temp;if (temperature > Temperature){Console.WriteLine("当前温度过高,冷却器开启");}else{Console.WriteLine("当前温度过低,冷却器关闭");}}}

下面的代码通过 +=为cooler对象订阅事件,订阅事件以后,通过 thermostat.CurrentTemperature = 60;这行代码可以触发事件。当使用-=取消订阅事件以后,通过thermostat.CurrentTemperature = 50;也不能触发事件了。

Thermostat thermostat = new Thermostat();Cooler cooler = new Cooler(50);thermostat.MyEventHandlerEvent += cooler.TemperatureChanged;//为目标增加观察者,也叫做为cooler对象订阅事件thermostat.CurrentTemperature = 60;thermostat.MyEventHandlerEvent -= cooler.TemperatureChanged;//为目标减去观察者,也叫做为cooler对象取消订阅事件thermostat.CurrentTemperature = 50;
http://www.shuangfujiaoyu.com/news/29438.html

相关文章:

  • 视频网站指数型基金
  • 潍坊 开发区网站建设2022最近比较火的营销事件
  • 做百度联盟做什么类型网站防恶意竞价点击软件
  • php网站开发进程百度快速seo优化
  • 怎么将国内网站接入香港服务器app推广刷量
  • 好看手机网站推荐免费域名注册申请
  • 给客户做网站推广网站的文案
  • 浅析动态网站建设之后台数据库的选择seo快速收录快速排名
  • 天津 网站设计公司宁波seo费用
  • 网站开发建设公司电话外贸找客户有什么网站
  • 思帽网站建设互联网seo是什么
  • 深圳约的网站设计百度官方认证
  • 长春市建设技工学校网站seo视频教程
  • wordpress修改url无法打开百度起诉seo公司
  • 七台河新闻联播2023太原百度seo排名
  • html5商城网站模板搜索引擎是软件还是网站
  • 宣城做网站公司南宁网站公司
  • 国外web设计网站天津seo外包
  • 哔哩哔哩免费网站观看企业软文营销
  • 零食电子商务网站建设策划书seo排名优化软件有用吗
  • 襄阳做网站公司seo干什么
  • 佛山企业网站建设渠道济南百度推广公司电话
  • 前端开发年终总结seo什么意思中文意思
  • wordpress目录分类设置网络优化工程师
  • wordpress下载链接关键词优化一般收费价格
  • 泷澄建设集团网站杭州seo搜索引擎优化公司
  • 地图类网站开发实战教程seo搜索引擎优化兴盛优选
  • 深圳建材网站宣传单设计百度百科词条创建入口
  • 如何分析一个网站的用户100个免费推广b站
  • 扬州市工程建设招标网安卓手机优化大师官方下载