c#事件机制
2016-12-27 22:08
393 查看
namespace test { class Publisher//出版社 { public delegate void PubComputer(string magazineName);//声明事件所需的代理 public delegate void PubLife(string magazineName); public event PubComputer OnPubComputer;//事件的声明 事件的本质是一个委托链 public event PubLife OnPubLife; public void issueComputer()//触发事件的方法 { if (OnPubComputer != null){ Console.WriteLine("发行电脑刊物"); OnPubComputer("编程指南"); } } public void issueLife() { if (OnPubLife!=null) { Console.WriteLine("发行生活刊物"); OnPubLife("家具"); } } } class Subsriber//订阅者 { private string name; public Subsriber(string name){ this.name = name; } public void Receive(string magazineName)//在事件订阅者中定义事件处理程序 { Console.WriteLine(name + "已经收到" + magazineName); } } class Story { static void Main() { Publisher pub = new Publisher(); Subsriber zs = new Subsriber("张三"); pub.OnPubComputer += new Publisher.PubComputer(zs.Receive);//向事件发行者订阅一个事件 Subsriber ls = new Subsriber("李四"); pub.OnPubComputer += new Publisher.PubComputer(ls.Receive); pub.OnPubLife += new Publisher.PubLife(ls.Receive); pub.issueComputer();//触发事件 pub.issueLife(); Console.WriteLine(); Console.WriteLine("一年后"); pub.OnPubComputer -= new Publisher.PubComputer(ls.Receive); pub.issueComputer();//触发事件 pub.issueLife(); } } }
相关文章推荐
- 银行收银系统(C#)
- 深入C#学习系列一:序列化(Serialize)、反序列化(Deserialize)
- C#综合揭秘——Entity Framework 并发处理详解
- C#中的值类型和引用类型
- C# Task.WhenAll Parallel
- C#-初始化器和构造函数初始化器
- [C#] double指定有效位数格式化
- [C#] double指定有效位数格式化
- .NET利用SignalR实现选择性消息推送
- C#基本概念之Mutex---互斥锁
- c#中的预编译指令
- C# typeof() 和 GetType()区别
- C# Web Api 上传文件
- .NET基础加强第五天(xml文档dom)
- [C#] 生成 (web): 未能加载文件或程序集“Microsoft.CSharp, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7
- [C#] 生成 (web): 未能加载文件或程序集“Microsoft.CSharp, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7
- C#多线程之线程池篇1
- C#中的Socket编程详解
- C#界面皮肤加载
- .NET基础加强第五天(XML文档)