有没有更好的方法在 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();
假设我正在编写某种 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();