11

已经回答了一个问题,在 C# 中,观察者模式不是已经使用事件实现了吗?

它询问观察者模式是否已经在 c# 中使用事件实现。

虽然我得到了事件和观察者模式,但观察者模式真的不只是代表,事件是进一步的实现吗?

4

1 回答 1

28

你是对的。事件只是具有一些稍微不同的功能的委托。所有的观察者模式都可以用委托来实现,而无需触及event关键字。

您可能会对“event”关键字实际带来的内容感兴趣。

  • 事件可以是接口的一部分,而常规委托字段不能
  • 事件不能被外部类调用,但普通委托可以
  • 事件具有额外的访问器(添加和删除),您可以覆盖这些访问器并为其提供自定义功能

编辑: 这是一篇关于事件和委托之间的 IL 代码比较的精彩文章。(提示:几乎相同)。

于 2009-06-21T07:02:32.803 回答