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

时间:2015-07-25 00:52:51

标签: c# events event-handling nullreferenceexception

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

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) {}

但这听起来也不对。

请告诉我以上哪项更好,以及是否有其他方法可以做到这一点。谢谢!

1 个答案:

答案 0 :(得分:3)

在调用PopupFinished之前,检查if(PopupFinished != null) PopupFinished(); 是否为空。

PROC SQL