博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
事件:限制类型能力
阅读量:6233 次
发布时间:2019-06-22

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

namespace ConsoleApplication1{    class Program    {        static void Main(string[] args)        {            Publisher pub = new Publisher();            Subscriber sub = new Subscriber();            pub.NumberChanged += new NumberChangedEventHandler(sub.OnNumberChanged);            pub.DoSomething();            pub.NumberChanged(100);            Console.Read();        }    }    public delegate void NumberChangedEventHandler (int count);    public class Publisher    {        private int count;        public NumberChangedEventHandler NumberChanged;        public void DoSomething()        {            if (NumberChanged != null)            {                count++;                NumberChanged(count);            }        }    }    public class Subscriber    {        public void OnNumberChanged(int count)        {            Console.WriteLine("Subscriber notified: count = {0}", count);        }    }}

当使用委托变量时,客户端可以直接通过委托变量触发事件,也就是直接调用pub.NumberChanged(100),这将会影响所有注册了该委托的订阅者。而事件的本意应该为事件发布者在其本身某个行为中触发,比如在DoSomething()中满足某个条件后触发。通过添加event关键字来发布事件,事件发布者的封装性会更好,事件仅仅供其他类型订阅,而客户端不能直接直接触发事件,事件只能在事件发布者Publisher类的内部触发。

public event NumberChangedEventHandler NumberChanged;

 

转载于:https://www.cnblogs.com/JoeyLieu/p/3684647.html

你可能感兴趣的文章
阿里“NASA”掀全球AI人才军备竞赛
查看>>
安全研究人员推出鱼叉式网络钓鱼黑箱粉碎机
查看>>
OpenStack 开始衰落了吗?
查看>>
[lcm] Qualcomm Android Display Subsystem 架构
查看>>
Django REST framework 的TokenAuth认证及外键Serializer基本实现
查看>>
PostgreSQL 图像搜索插件使用篇
查看>>
无线网络便利 无线安全堪忧
查看>>
选择云存储 不重视这八个问题就会吃亏
查看>>
云计算在大型企业迅猛发展
查看>>
国内首个国际云计算博览会落户重庆
查看>>
【天池直播】O2O大赛冠军经验分享
查看>>
IDC:物联网计划对IT基础设施影响重大
查看>>
浪潮服务器撑起食品质量安全追溯物联网 力保舌尖上的安全
查看>>
七牛小伙伴|小咖秀的产品构建经验谈
查看>>
大数据时代下的意图搜索 个性化服务是关键
查看>>
这些技术可能会阻碍你在大数据征程上的步伐
查看>>
大数据融合将解锁物联网真正潜力
查看>>
不止提供上网服务 WiFi技术有了新功能
查看>>
云服务再次歇菜数易云备系统从容应对
查看>>
智能数据湖势在必行
查看>>