0

这是比实际问题更理论的问题,实际上我没有任何性能问题。

我试图弄清楚 eventד 是如何工作的(并推断使用它们而不是调用函数是否会降低性能)。

事件只是一个类,它包含一个指向已注册该事件的函数的指针列表,还是在它后面有更多?

4

1 回答 1

1

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

于 2013-03-31T20:03:42.450 回答