要求是对象A
订阅作为参数B
携带的 's 事件。int
我以给定的方式做到了这一点:
public delegate void BackToBase(int i);
public event BackToBase BackToBaseEvent;
...
if (this.BackToBaseEvent != null)
this.BackToBaseEvent(5);
但在我看来,有一种更短的方法可以做到这一点。在那儿?
您可以将事件处理程序初始化为 ctor 中的空委托,然后您不需要检查,因为委托永远不会为空。例如
this.BackToBaseEvent += (s, e) => {};
然后你就做。
this.BackToBaseEvent(this, new MyEventArgs(5));
请务必遵守事件处理模式,使用正确的委托和事件 arg 类。
如果您确实想要检查 null(以避免调用空操作的开销),请使用http://msdn.microsoft.com/en-us/library/edzehd2t.aspx中所述的局部变量来避免线程问题。