事件和委托的区别到底是什么

委托提供了一种机制,可实现涉及组件间最小耦合度的软件设计,它是一种引用类型

和委托类似,事件是后期绑定机制。事件是建立在对委托的语言支持之上的,它是对委托的封装,可以理解为一种特殊的委托(本质不是)

事件是对象用于广播已发生事情的一种方式。任何其他组件都可以订阅事件,并在事件引发时得到通知。

相同点

  • 它们都提供了一个后期绑定方案:在该方案中,组件通过调用仅在运行时识别的方法进行通信。
  • 它们都支持单个和多个订阅服务器方法。这称为单播和多播支持。
  • 二者均支持用于添加和删除处理程序的类似语法。
  • 引发事件和调用委托使用完全相同的方法调用语法。它们甚至都支持与?.运算符一起使用的相同的Invoke()方法语法。

不同点

  • 用于事件的委托通常没有返回值,如果需要返回值,那么请使用委托。
  • 对事件的侦听是可选的。
  • 事件只能从外部添加和删除响应方法,不能主动触发事件、获取其它注册的响应方法,而委托不受这种限制。

相关文章