gpt4 book ai didi

c# - 在事件声明中添加匿名空委托(delegate)有什么缺点吗?

转载 作者:IT王子 更新时间:2023-10-29 03:38:48 24 4
gpt4 key购买 nike

我看到过几次提到这个习语(包括 on SO ):

// Deliberately empty subscriber
public event EventHandler AskQuestion = delegate {};

好处很明显 - 它避免了在引发事件之前检查是否为 null 的需要。

但是,我很想知道是否有任何缺点。例如,它是否被广泛使用并且足够透明以至于不会引起维护问题?空事件订阅者调用是否对性能有明显影响?

最佳答案

为什么不引入性能开销,而不是 use an extension method缓解这两个问题:

public static void Raise(this EventHandler handler, object sender, EventArgs e)
{
if(handler != null)
{
handler(sender, e);
}
}

一旦定义,您就不必再次进行空事件检查:

// Works, even for null events.
MyButtonClick.Raise(this, EventArgs.Empty);

关于c# - 在事件声明中添加匿名空委托(delegate)有什么缺点吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/170907/

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