在 C# 中通过委托实现观察者模式?

发布于 2024-07-25 21:40:00 字数 247 浏览 6 评论 0原文

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

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

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

There is a question already answered which is In C#, isn't the observer pattern already implemented using Events?

It asks if the observer pattern is already implemented in c# using events.

While I get the events and observer pattern, isn't the observer pattern really just delegates and events is a further implementation?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

薯片软お妹 2024-08-01 21:40:01

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

那么您可能会对“event”关键字实际带来什么感兴趣。

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

这里有一篇很棒的文章,其中对事件和委托之间的 IL 代码进行了比较。 (提示:几乎是一样的)。

You are correct. An event is simply a delegate with some slightly different functionality. All of the observer pattern can be implemented with delegates without ever touching the event keyword.

You may be interested then, in what the "event" keyword actually brings to the table.

  • Events can be part of an interface, whereas
    regular delegate field cannot
  • Events cannot be invoked by outside classes,
    but regular delegates can
  • Events have additional accessors (add and remove) that you can override and provide custom functionality for

Edit: Here's a great writeup with IL code comparison between events and delegates. (Hint: it's pretty much the same).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文