gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 21:56:16 29 4
gpt4 key购买 nike

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

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

关于c# - 有没有更好的方法在 C# 中初始化 EventHandlers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31621749/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com