C#事件——对委托的封装
来源:互联网 发布:淘宝美式画 编辑:程序博客网 时间:2024/05/17 00:16
C#中,正如属性是对成员变量的封装,事件是对委托的封装。
完整的事件流程:
class Program { static void Main(string[] args) { EventSender sender = new EventSender(); EventRevicer revicer = new EventRevicer(); sender.myEvent += revicer.Action; //invoke the event sender.Active(new MyEventArgs("C# Event")); } } class MyEventArgs:EventArgs { public MyEventArgs(string name) { this.name = name; } public string name { get; set; } } delegate void MyEventHandler(EventSender sender,MyEventArgs e); class EventSender { private MyEventHandler myEventHandler; public event MyEventHandler myEvent { add { myEventHandler += value; } remove { myEventHandler -= value; } } public void Active(MyEventArgs e) { Console.WriteLine("I send the notification"); myEventHandler.Invoke(this, e); } } class EventRevicer { internal void Action(EventSender sender, MyEventArgs e) { Console.WriteLine("I get the notification!"); } }
简写的事件流程:
class Program { static void Main(string[] args) { EventSender sender = new EventSender(); EventRevicer revicer = new EventRevicer(); sender.myEvent += revicer.Action; //invoke the event sender.Active(new MyEventArgs("C# Event")); } } class MyEventArgs : EventArgs { public MyEventArgs(string name) { this.name = name; } public string name { get; set; } } class EventSender { public event EventHandler myEvent;//the event public void Active(MyEventArgs e) { Console.WriteLine("I send the notification"); myEvent.Invoke(this, e); } } class EventRevicer { internal void Action(object sender, EventArgs e) { //Type convert MyEventArgs args = e as MyEventArgs; Console.WriteLine("I get the notification! args:{0}",args.name); } }
注:我们平时经常用的简写流程中省略了事件封装的过程,但实际上C# 语言机制内部是有这个对委托的封装过程的。
0 0
- C#事件——对委托的封装
- 对C#委托及事件委托的理解
- 对C#委托及事件委托的理解
- 对C#委托及事件委托的理解
- 对C#委托及事件委托的理解(转)
- 对C#委托及事件委托的理解
- 对C#委托及事件委托的理解
- 对C#委托及事件委托的理解
- 对C#委托及事件委托的理解
- 对c#委托及事件委托的理解_c#应用
- C# 委托,事件(二)——委托
- 【原创】C# 委托与事件的传递与封装案例
- 对C#委托、事件、自定义事件的理解
- C#委托,事件(三)——事件
- 我对C#中事件委托的通俗看法
- 对C#下函数,委托,事件的一点理解
- 对C# 中的委托和事件的分析
- 对C#中委托和事件的理解
- 进度条加载
- Linux C文件操作(一)
- 美化linux终端界面
- C# 常用正则表达式验证
- 深度学习
- C#事件——对委托的封装
- Objective-C中load和initialize有点难的一道题
- 策略模式
- android应用开发-从设计到实现 2-9 界面模式
- Opencv学习笔记一,各种结构说明
- Perl Unicode 全攻略:
- java web项目中实现打印功能(lodop)
- 第18题:4Sum
- 搜索技巧