已经回答了一个问题,它是In C#, isn't the observer pattern already implemented using Events?

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

当我获得事件和观察者模式时,观察者模式是否真的只是委托(delegate)而事件又是进一步的实现?

最佳答案

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

然后,您可能会对“事件”关键字实际上带到表中的内容感兴趣。

  • 事件可以是接口(interface)的一部分,而
    常规代表字段不能
  • 事件无法由外部类调用,
    但是常规代表可以
  • 事件具有其他访问器(添加和删除),您可以覆盖其他访问器并为
  • 提供自定义功能

    编辑:Here's a great writeup与事件和委托(delegate)之间的IL代码比较。 (提示:几乎相同)。

    10-08 15:47