可以通过以下任一方式调用事件处理程序:
SomeEventHandler.Invoke(this, new EventArgs());
或
SomeEventHandler(this, new EventArgs());
两个版本之间是否存在显着差异?也许就性能而言?
答案 0 :(得分:0)
他们是一样的。它们将被编译为相同的代码。与这两者的不同之处在于Invoke
方法允许您(在C#6中)使用空条件运算符?.
来检查处理程序是否在调用之前被初始化。在第一种情况下,您必须执行以下操作
if (SomeEventHandler != null)
SomeEventHandler(this, new EventArs());
而使用Invoke
可以做到
SomeEventHandler?.Invoke(this, new EventArgs());
我希望这会有所帮助。