使用委托在C#中实现的观察者模式?

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

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

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

你是对的。 事件只是一个代理,function略有不同。 所有观察者模式都可以通过代理实现,而无需触及event关键字。

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

  • 事件可以是接口的一部分,而常规的委托字段则不能
  • 外部类不能调用事件,但常规代理可以调用
  • 事件具有可以覆盖的其他访问者(添加和删除),并为其提供自定义function

编辑: 这是一个很棒的写作 ,在事件和代理之间进行IL代码比较。 (提示:它几乎一样)。