博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据字典存储事件实例
阅读量:6235 次
发布时间:2019-06-22

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

      当有很多事件,大多数事件不会实现时,可以使用字典存储事件实例,这也是事件选择器的典型用法。

public delegate void EventHandler1(int i);    public delegate void EventHandler2(string s);    public class PropertyEvent    {        Dictionary
eventTable; public PropertyEvent() { eventTable = new Dictionary
(); eventTable.Add("Event1", null); eventTable.Add("Event2", null); } public event EventHandler1 Event1 { add { lock (eventTable) { eventTable["Event1"] = (EventHandler1)eventTable["Event1"] + value; } } remove { lock (eventTable) { eventTable["Event1"] = (EventHandler1)eventTable["Event1"] - value; } } } public event EventHandler2 Event2 { add { lock (eventTable) { eventTable["Event2"] = (EventHandler2)eventTable["Event2"] + value; } } remove { lock (eventTable) { eventTable["Event2"] = (EventHandler2)eventTable["Event2"] - value; } } } public void RaiseEvent1(int i) { EventHandler1 handler1 = (EventHandler1)eventTable["Event1"]; if (handler1 != null) handler1(i); } public void RaiseEvent2(string s) { EventHandler2 handler2 = (EventHandler2)eventTable["Event2"]; if (handler2 != null) handler2(s); } } class DictionaryEvent { public static void DelegateMethod1(int i) { Console.WriteLine(i.ToString()); } public static void DelegateMethod2(string s) { Console.WriteLine(s); } public static void Main(string[] args) { PropertyEvent p = new PropertyEvent(); p.Event1 += DictionaryEvent.DelegateMethod1; p.Event1 += DictionaryEvent.DelegateMethod1; p.Event1 += DictionaryEvent.DelegateMethod1; p.Event1 -= DictionaryEvent.DelegateMethod1; p.RaiseEvent1(1); p.Event2 += DictionaryEvent.DelegateMethod2; p.Event2 += DictionaryEvent.DelegateMethod2; p.Event2 += DictionaryEvent.DelegateMethod2; p.Event2 -= DictionaryEvent.DelegateMethod2; p.RaiseEvent2("Test"); Console.Read(); } }

输出如下:

转载于:https://www.cnblogs.com/wanghonghu/archive/2012/06/25/2562872.html

你可能感兴趣的文章
log parser 微软iis 日志分析
查看>>
剖析OkHttp缓存机制
查看>>
CentOS 7 安装 Oracle 11.2.0.4
查看>>
HTML项目总结
查看>>
iPad和iPhone开发的比较
查看>>
mysql 针对单张表的备份与还原
查看>>
Gerrit使用简介
查看>>
SQL2008报表三种实现Reporting Service2008匿名访问的方法(转)
查看>>
emacs 根据文件名自动加载内容
查看>>
Win7最高权限问题
查看>>
pdf关闭工具栏
查看>>
java设计模式10:Flyweight
查看>>
javascript笔记:深入分析javascript里对象的创建(上)
查看>>
获取引用js文件所在的路径(做jquery插件用)
查看>>
Android实现计时与倒计时的几种方法
查看>>
日期相关
查看>>
Windows Server 8 开发预览版
查看>>
CentOS在同一个窗口打开文件夹
查看>>
从零开始学MVC3——创建项目
查看>>
java笔记:熟练掌握线程技术---基础篇之解决资源共享的问题(中)--中篇
查看>>