C#中关键字event 对delegate 对象的影响
2011-03-30 16:38
337 查看
c#中的delegate是Observe(观察者)设计模式的一种实现,以多播委托为底层支持,且是类型安全的。
event就是delegate的一种应用。加上event关键字的delegate能做的事,所谓纯的delegate也完全能做到。
如果你不想在声明delegate的类之外调用delegate,以及除了声明delegate的类,其它类只能订阅(Subscribe,即+=)或取消订阅(Unsubscribe,即-=)时就给delegate 对象的声明加个event关键字。
.net framework推荐使用了event关键字的delegate的原型最好类似delegate void MyEventHandler(object sender, MyEventHandler e);
事件模式推荐所有的事件处理程序的返回类型都为void,但并不强制。在Microsoft.NET Framework类库中有一些事件处理程序,例如ResolveEventHandler,就没有遵守Microsoft自己规定的模式,因为ResolveEventHandler事件处理程序返回一个类型为Assembly的对象。
event就是delegate的一种应用。加上event关键字的delegate能做的事,所谓纯的delegate也完全能做到。
如果你不想在声明delegate的类之外调用delegate,以及除了声明delegate的类,其它类只能订阅(Subscribe,即+=)或取消订阅(Unsubscribe,即-=)时就给delegate 对象的声明加个event关键字。
.net framework推荐使用了event关键字的delegate的原型最好类似delegate void MyEventHandler(object sender, MyEventHandler e);
事件模式推荐所有的事件处理程序的返回类型都为void,但并不强制。在Microsoft.NET Framework类库中有一些事件处理程序,例如ResolveEventHandler,就没有遵守Microsoft自己规定的模式,因为ResolveEventHandler事件处理程序返回一个类型为Assembly的对象。
相关文章推荐
- c# 关键字delegate、event(委托与事件)[MSDN原文摘录][1]
- C#的delegate/event/Action/Func/Predicate关键字
- c# 关键字delegate、event(委托与事件)[MSDN原文摘录][2]
- .NET的那些事儿(8)——C#中的Delegate和Event
- C#的事件(Event)和代理/委托(Delegate)例子
- C# 中的 delegate, Lambda 表达式 和 event
- C# delegate and event 续
- C#中的delegate和event
- C#:代表(delegate)和事件(event) (转)
- 对于新手用c#中的delegate(委托)和event(事件)
- C#:代表(delegate)和事件(event) (转)
- C#中的delegate 与event(一)
- 委托和事件[delegate and event]_C#
- C#中的delegate和event
- c#中的delegate(委托)和event(事件)
- C#中的delegate和event,WF中传递参数和监听事件会用到
- C#编程利器之四:委托与事件(Delegate and event) (上)
- c#中的delegate(委托)和event(事件)
- C#:代表(delegate)和事件(event)
- 学习C# delegate和C# event