c# - 在 .dotnet (c#) 中,如果没有任何订阅,是否仍会引发事件?

标签 c# .net events event-handling clr

这是一个基本问题,但我意识到我不知道答案。

在 dotnet 中,如果没有任何订阅,是否仍会引发事件? 该事件是否知道它是否有订阅者?

最佳答案

它当然知道,event 基本上是一个带有语法糖的委托(delegate),每个委托(delegate)都是 MulticastDelegate 的继承者,MulticastDelegate 内部有订阅者列表。从技术上讲,它就像一个链表,其中一个订阅者有一个指向下一个订阅者的链接(委托(delegate)是不可变的)。查看 MulticastDelegate dotnet 核心源代码。

关于c# - 在 .dotnet (c#) 中,如果没有任何订阅,是否仍会引发事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48592804/

相关文章:

.net - 如何获取在其下构建程序集的 .NET 版本(1.1、2.0、3.0 等)?

c# - 使用 StringBuilder 编写语句的更简单方法

events - 如何使用 Meteor js 触发自定义事件

jQuery如何让Enter(Return)通过输入文本字段充当Tab键但最终触发提交按钮

c# - OpenFileDialog/c# 在任何文件上都很慢。更好的解决方案?

c# - 枚举类方括号

c# - 在 Canvas 中移动按钮

c# - 打印文档

c# - 将 TM 上标添加到字符串

java - 如何在 Jquery 中获取/触发复选框在页面加载后执行自身