gpt4 book ai didi

C# EventHandler 文档代码示例

转载 作者:行者123 更新时间:2023-12-04 01:08:38 27 4
gpt4 key购买 nike

我正在阅读有关 EventHandlers 的 .NET 文档,但不理解来自 https://learn.microsoft.com/en-us/dotnet/standard/events/ 的这段代码:

class Counter
{
public event EventHandler ThresholdReached;

protected virtual void OnThresholdReached(EventArgs e)
{
EventHandler handler = ThresholdReached;
handler?.Invoke(this, e);
}

// provide remaining implementation for the class
}

局部变量handler的作用是什么?为什么不直接调用 TresholdReached TresholdReached?.Invoke(this, e); ?类似的例子在这里: https://learn.microsoft.com/en-us/dotnet/api/system.eventhandler-1?view=net-5.0

最佳答案

What is the purpose of local variable handler?

可能没有。在代码正确性方面当然没有理由。它似乎是旧的、null-conditional operator 版本文档的遗留物,其中需要将事件字段 ThresholdReached 复制到局部变量中,以便安全地解决引发事件和可能取消订阅它的任何其他代码之间的竞争条件。正如您所指出的,使用 null 条件运算符,代码可以只是一行,通过事件字段本身进行调用。

我只说“可能”,因为我猜文档的作者希望通过更明确的代码形式实现其他一些教学目标的可能性很小。但我无法想象那可能是什么,而且它显然干扰了对代码的一般理解(即分散了对重要部分的注意力)。

我在页面上提交了评论,让 Microsoft 知道这个问题。我认为 Microsoft Git 存储库中也可能有一个地方,如果您愿意,您可以在其中提交文档问题。

我的经验是,无论以何种方式将问题传达给 Microsoft,他们通常都会在相对较短的时间内解决问题。我猜想在接下来的几周内,该段落将得到修复,而这个问题将不再相关。 :)

关于C# EventHandler 文档代码示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65531809/

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