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

wordpress博客站点郑州seo代理外包公司

wordpress博客站点,郑州seo代理外包公司,wordpress顶部空白,河南网站建设公司前言 在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.dinnco.com/news/14589.html

相关文章:

  • 网站建设浩森宇特浙江百度查关键词排名
  • 摄影作品网站建设方案书百度店面定位怎么申请
  • 苏州网站建设制作企业类网站有哪些例子
  • 郑州高端网站开发沈阳专业seo排名优化公司
  • 网站设计 网络推广的服务内容网站的网络推广
  • 现在还有用dw做网站制作网站的公司有哪些
  • 交易网站开发文档企业文化内容范本
  • 昆山专业简历制作网站seo引擎优化是做什么的
  • 政府门户网站特色建设调研报告seo销售话术开场白
  • 服装网站的建设策划交换友情链接吧
  • 陕西电商b2c网站建设公司地推接单网
  • 网站建设电话销售术语品牌营销策略有哪些
  • 视频剪辑公司淄博seo推广
  • 织梦CMS做的网站能过等保三级吗网络营销的目标
  • 大连零基础网站建设培训电话数据分析软件工具有哪些
  • 企业网站全屏轮播怎么做百度搜索关键词
  • 黑山网站制作公司福州网站优化
  • 在阿里云上做网站步骤海南百度推广电话
  • 宁波网站建设地址海外游戏推广平台
  • 建手机网站价格seo优化的价格
  • dedecms中英文网站开发开发一个app需要多少钱
  • 音乐网页设计模板htmlseo待遇
  • wordpress 一键复制湖南网站建设推广优化
  • 公司网页设计实例教程上海网络推广优化公司
  • 自适应网站做多大尺寸的重庆百度整站优化
  • 网站目录链接怎么做的万网官网登录
  • 网站界面设计要素南宁网络推广培训机构
  • 犬夜叉b站高清正版资源如何搜索关键词
  • 建设工程安全备案网站程序员培训班要多少钱
  • 兰州高端网站建设查询网站流量的网址