博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#事件的基本使用
阅读量:4320 次
发布时间:2019-06-06

本文共 1219 字,大约阅读时间需要 4 分钟。

//声明一个事件,只需要在声明一个委托对象时加上event关键字就行。如下:public delegate void PriceChange(decimal oldPrice,decimal newPrice);public class IPhone6{public event PriceChange PriceChangeEvent;}//事件的使用和委托完全一样,只是多了些约束,如下面的例子:public delegate void PriceChange(decimal oldPrice,decimal newPrice);public class IPhone6{private decimal price;public decimal Price { get { return price; }set {if (price == value) return;decimal oldPrice = price;price = value;PriceChangeEvent?.Invoke(oldPrice,price);} }public event PriceChange PriceChangeEvent;}static void Main(string[] args){IPhone6 phone6 = new IPhone6() { Price=3600};decimal newPric=5200;phone6.PriceChangeEvent += PriceChange;while (newPric!=0) {newPric = decimal.Parse(Console.ReadLine());phone6.Price = newPric;}Console.Read();}static void PriceChange(decimal oldPrice,decimal newPrice) {if (oldPrice < newPrice) Console.WriteLine($"IPhone涨价了,原价是:{oldPrice}元,现价是:{newPrice},不买了,买小米");elseConsole.WriteLine($"IPhone降价了,原价是:{oldPrice}元,现价是:{newPrice},我还是买小米");}

 

事件与委托的区别:

事件有一系列规则和约束用以保证程序的安全可控,事件只有+=和-=操作,这样订阅者只能有订阅或取消订阅操作,没有权限执行其他操作。如果是委托,那么订阅者就可以使用=来对委托对象重新赋值(其他订阅者全部被取消订阅),甚至将其设置为null,甚至订阅者还可以直接调用委托,这些都是很危险的操作,广播者就失去了独享控制权。

事件保证了程序的安全性和健壮性。

转载于:https://www.cnblogs.com/Torey/p/8025300.html

你可能感兴趣的文章
Delphi的FIFO实现
查看>>
springMVC入门(六)------json交互与RESTFul风格支持
查看>>
使用phpMyAdmin管理网站数据库(创建、导入、导出…)
查看>>
[NOI2018]屠龙勇士 excrt
查看>>
Educational Codeforces Round 18
查看>>
输入数字,用逗号隔开
查看>>
修改jq weui自定义对话框点击确定按钮不关闭对话框
查看>>
Js单元测试-分块延迟加载
查看>>
牛客网暑期ACM多校训练营(第一场) - J Different Integers(线段数组or莫队)
查看>>
(转)AS3 面相对象 高级话题
查看>>
Missile
查看>>
关于kindedit和 Uedit后者兼容前者
查看>>
微软BI 之SSIS 系列 - 利用 SSIS 模板快速开发 SSIS Package
查看>>
eclipse中使用git上传到githup,报401 Authorization Required
查看>>
基于Golang打造一款开源的WAF网关
查看>>
POJ 2955 Brackets
查看>>
Python: execute an external program (zz)
查看>>
在T-SQL语句中访问远程数据库(openrowset/opendatasource/openquery)
查看>>
Ubuntu14.04安装JDK
查看>>
Latex 公式换行问题(换行,等号对齐)
查看>>