假设我正在编写某种类库。我有一堂课:
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
之前进行测试以检查其是否为null。
if(PopupFinished != null)
PopupFinished();