在c#中,引发事件和调用函数在性能上有区别吗?

本文关键字:性能 函数 有区别 调用 事件 | 更新日期: 2023-09-27 18:06:49

这是一个理论多于实际的问题,实际上我没有任何性能问题。

我正试图弄清楚事件的工作原理(并推断使用它们而不是调用函数是否有性能损失)。

事件只是一个类,它保存了一个指向该事件的函数的指针列表,还是在它后面有更多的指针?

在c#中,引发事件和调用函数在性能上有区别吗?

当事件被引发时,一个多播委托(本质上是为在该类型实例上完成的每个.SomeEvent += MySomeEventHandler附加一个新的事件处理程序-它实际上在每个+=分配一个新的委托列表,但现在跳过它)将执行每个附加的处理程序。因此,在每个附加了多个事件处理程序的情况下,将执行多个方法调用。对于真正的低级细节,只需查看事件引发情况下发出的IL,并将其与将事件更改为常规回调时的情况进行比较。