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