C# · 12月 26, 2021

函数调用和C#中的事件之间是否存在性能差异?

我会试着澄清我的问题:

我有一个名为Draw的函数(有人(XNA)每秒调用她60次),
我有很多要绘制的对象,所以我有以下代码:
void Draw()
{
obj1.draw();
obj2.draw();
obj3.draw();
….
}

是否会产生性能影响,如果我将创建一个事件,将由Draw()引发,并且所有对象都会注册该事件?

如果我不清楚我问的是:
通过注册活动来呼叫功能是否与常规呼叫不同?

解决方法 关于性能,我认为 Jon Skeet’s example非常有说服力,代表们不会给性能增加任何重大开销,甚至可能会改进它.

您需要考虑事件/委托的一个因素是处理侦听事件的取消对象或您的引用计数将无法正确重置,您会发现自己有内存泄漏.避免使用匿名方法,除非您准备存储对它们的引用,以便它们可以在Dispose等上取消连接.