有没有更好的方法在C#中初始化EventHandlers



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

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();

相关内容

  • 没有找到相关文章

最新更新