假设我正在编写某种类库。我有一个类:
public class PopupControl : UserControl {
// Some code
public event EventHandler PopupFinished;
}
如果我想在另一个类中处理这个事件,我只使用+=
运算符,不会发生任何特殊情况。但是,当事件不在任何地方处理时,PopupFinished
就是null
。当我调用PopupFinished (this, EventArgs.Empty)
时,我得到一个NullReferenceException
。所以我需要这样做:
public PopupControl () {
PopupFinished += popupFinished;
//Some more code
}
private void popupFinished (object sender, EventArgs e) {}
不过,这听起来并不是一个好的编程实践。(还是它?(
然后我想到了另一种方法:
try {
PopupFinished (this, EventArgs.Empty);
} catch (NullReferenceException) {}
但这听起来也不对。
请告诉我以上哪种更好,是否有其他方法可以做到这一点。谢谢
在调用PopupFinished
之前进行测试以检查其是否为空。
if(PopupFinished != null)
PopupFinished();