假设我正在编写某种类库。我有一堂课:

public class PopupControl : UserControl {
    // Some code
    public event EventHandler PopupFinished;
}


如果要在另一个类中处理此事件,则只需使用+=运算符,就不会发生任何特殊情况。但是,如果未在任何地方处理事件,则PopupFinishednull。当我呼叫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();

10-06 01:03