使用“调用”调用事件处理和使用“传统方法调用”之间是否存在明显差异?

时间:2017-08-18 10:09:31

标签: c# event-handling

可以通过以下任一方式调用事件处理程序:

SomeEventHandler.Invoke(this, new EventArgs());

SomeEventHandler(this, new EventArgs());

两个版本之间是否存在显着差异?也许就性能而言?

1 个答案:

答案 0 :(得分:0)

他们是一样的。它们将被编译为相同的代码。与这两者的不同之处在于Invoke方法允许您(在C#6中)使用空条件运算符?.来检查处理程序是否在调用之前被初始化。在第一种情况下,您必须执行以下操作

if (SomeEventHandler != null)
    SomeEventHandler(this, new EventArs());

而使用Invoke可以做到

SomeEventHandler?.Invoke(this, new EventArgs());

我希望这会有所帮助。