gpt4 book ai didi

c# - 一个事件是否需要至少有一个处理程序?

转载 作者:行者123 更新时间:2023-11-30 19:03:40 25 4
gpt4 key购买 nike

为什么事件需要至少有一个处理程序?

我为我的控件创建了自定义事件,并在我的控件代码内部的某处创建了自定义事件,我将此事件称为:

this.MyCustomEvent(this, someArgs);

如果没有处理程序订阅它,它会抛出一个 NullReferenceException

当我在控件的构造函数中添加一个处理程序时,一切正常:

this.MyCustomEvent += myCutomEventHandler;

void myCustomEventHandler(object sender, EventArgs e)
{ /* do nothing */ }

这是正常现象还是我做错了什么?它不应该自动检查是否有订阅的处理程序吗?恕我直言,这有点愚蠢。

最佳答案

我建议你有一个非常有用的扩展方法:

public static void Raise<T>(this EventHandler<T> eventHandler, object sender, T e) where T : EventArgs
{
if (eventHandler != null)
{
eventHandler(sender, e);
}
}

它将为您进行检查。

用法:

MyCustomEvent.Raise(this, EventArgs.Empty);

关于c# - 一个事件是否需要至少有一个处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3431043/

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