假设我正在编写某种类库。我有一节课:
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) {}
但这听起来也不对。
请告诉我以上哪项更好,以及是否有其他方法可以做到这一点。谢谢!
答案 0 :(得分:3)
在调用PopupFinished
之前,检查if(PopupFinished != null)
PopupFinished();
是否为空。
PROC SQL