摘要: .NET的事件模型是建立在委托的机制上,事件机制可以做到,原生的委托也都可以做到;可以说,事件只是对委托的封装,使得用起来更安全。在具体的代码里,定义一个委托和定义一个事件的差别仅仅是:定义事件时要前面加一个 event 关键字!正因为这个关键字,编译器就会为这个被封装了的委托暗地里做很多事情,如原生委托可以直接用new来初始化,可以在委托链绑定了很多方法的时候直接用一个 = 操作符来把那些方法清空,等等,而对于事件,编译器把这些都封装了,不能乱来,编译器只是提供了两个方法:add_myEvent、remove_myEvent 让事件客户端仅能通过 += 、 -= 来添加、移除事件的订阅者,如 阅读全文
posted @ 2012-09-06 16:00 仙外仙 阅读(226) 评论(0) 推荐(0) 编辑
摘要: 委托本质上是一个类,隐式继承自System.MulticastDelegate类,该类维护一个带有链接的委托列表,在调用多播委托时,将按照委托列表的委托顺序而调用,该类还包括一个接受两个参数的构造器和3个重要的方法:BeginInvoke、EndInvoke、Invoke;MulticastDelegate 拥有一个带有链接的委托列表,该列表称为调用列表,它包含一个或多个元素。在调用多路广播委托时,将按照调用列表中的委托出现的顺序来同步调用这些委托。.NET提供了简洁的语法来创建委托链:以+= 和-= 操作符分别进行绑定和解除绑定的操作;一切在代码,不废话,其实,理解了委托类型和委托类型的变量 阅读全文
posted @ 2012-09-06 10:51 仙外仙 阅读(235) 评论(0) 推荐(0) 编辑