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

Is there a better way to initialize EventHandlers in C#

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

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

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