c#中delegate和event之间的区别
来源:互联网 发布:光伏智能软件 编辑:程序博客网 时间:2024/04/30 11:25
下面是网上找到的几段话,阐述event和delegate的不同之处。
(1)
你不想在声明delegate的类之外调用delegate,还有,除了声明delegate的类,其它类只能订阅(Subscribe,即+=)或取消订阅(Unsubscribe,即-=)时就给delegate加个event关键字。
event和delegate谈不上什么区别不区别的。event就是delegate的一种应用。加上event关键字的delegate能做的事,所谓纯的delegate也完全能做到。
event就是某个类发生一些事情时,通知对该事件感兴趣的客户的一种手段。
不加event也可以达到效果。
加了event的delegate变量就当是它给外面的世界只显示了两个东西:+=、-=。
外面的世界既不能对他赋值(=操作),也不能调用它(myDelegate())。
还有一点.net framework推荐使用了event关键字的delegate的原型最好类似delegate void MyEventHandler(object sender, MyEventHandler e);这个样子。
声明了event delegate的类变得更加有个性,他可以对其他人说:我自己有什么事儿时候再告诉你们,我告诉你们之前你们别烦我,也不用告诉我该做什么。发生事情的时候我自己怎么处理是我自己的事,关你们屁事,事情发生了,我通知你们,你们怎么做是你们的事,做不做、怎么做也不管我的事。
(2)
事件是Observe(观察者)设计模式的一种实现,以多播委托为底层支持,事件的声明只负责发布以及它的两个注册方法(Add_EventName,Remove_EventName),可以参考.NET框架,上面讲的比较具体,事件体系结构可参考C#类设计手册。
另外,补充一点:
事件模式要求所有的事件处理程序的返回类型都为void。必须这样做的原因是引发事件后可能要调用几个回调方法,因此不可能使每个回调方法都返回一个值。让返回类型为void就不会允许回调返回值。然而,在Microsoft.NET Framework类库中有一些事件处理程序,例如ResolveEventHandler,就没有遵守Microsoft自己规定的模式,因为ResolveEventHandler事件处理程序返回一个类型为Assembly的对象。
(1)
你不想在声明delegate的类之外调用delegate,还有,除了声明delegate的类,其它类只能订阅(Subscribe,即+=)或取消订阅(Unsubscribe,即-=)时就给delegate加个event关键字。
event和delegate谈不上什么区别不区别的。event就是delegate的一种应用。加上event关键字的delegate能做的事,所谓纯的delegate也完全能做到。
event就是某个类发生一些事情时,通知对该事件感兴趣的客户的一种手段。
不加event也可以达到效果。
加了event的delegate变量就当是它给外面的世界只显示了两个东西:+=、-=。
外面的世界既不能对他赋值(=操作),也不能调用它(myDelegate())。
还有一点.net framework推荐使用了event关键字的delegate的原型最好类似delegate void MyEventHandler(object sender, MyEventHandler e);这个样子。
声明了event delegate的类变得更加有个性,他可以对其他人说:我自己有什么事儿时候再告诉你们,我告诉你们之前你们别烦我,也不用告诉我该做什么。发生事情的时候我自己怎么处理是我自己的事,关你们屁事,事情发生了,我通知你们,你们怎么做是你们的事,做不做、怎么做也不管我的事。
(2)
事件是Observe(观察者)设计模式的一种实现,以多播委托为底层支持,事件的声明只负责发布以及它的两个注册方法(Add_EventName,Remove_EventName),可以参考.NET框架,上面讲的比较具体,事件体系结构可参考C#类设计手册。
另外,补充一点:
事件模式要求所有的事件处理程序的返回类型都为void。必须这样做的原因是引发事件后可能要调用几个回调方法,因此不可能使每个回调方法都返回一个值。让返回类型为void就不会允许回调返回值。然而,在Microsoft.NET Framework类库中有一些事件处理程序,例如ResolveEventHandler,就没有遵守Microsoft自己规定的模式,因为ResolveEventHandler事件处理程序返回一个类型为Assembly的对象。
- c#中delegate和event之间的区别
- c#中delegate和event之间的区别
- C#中Delegate和Event以及它们的区别
- C# event 和delegate的区别
- C#知识点总结系列:C#中Delegate和Event以及它们的区别
- C#的Delegate和Event
- delegate和event的区别
- delegate和event的区别
- C#中Delegate和Event的实现原理以及用法。
- C#中Event和Delegate的混合使用
- Event delegate 的区别
- C# delegate和C# event
- jQuery中.bind()、.live()和.delegate()方法之间的区别
- C#中的delegate和event
- C#中的delegate和event
- C#中的delegate和event
- C#中的delegate和event
- C#中的delegate和event
- 简单的版面分析
- TCPIPChap171819TCP
- Service
- Android service 服务 笔记
- 中国手机再次迎来历史性发展机遇
- c#中delegate和event之间的区别
- 悄悄的喜欢上你
- emacs 配置
- 3.6 函数的参数传递
- 总有一种幸福会走过来
- emacs 基本配置
- mysql数据库转换为Access
- 对于前一段时间的工作总结
- 三思而后行:前期准备