gpt4 book ai didi

c# - 代表和事件

转载 作者:太空宇宙 更新时间:2023-11-03 18:19:23 26 4
gpt4 key购买 nike

我将它们用于不同对象之间的“通信”,作为发布者和订阅者模式。

我看到一些例子,有时事件被声明为静态的,有时却不是:

public delegate void LogProgress(string str)
public static event LogProgress LogProgressEvent;


if (LogProgressEvent != null)
LogProgressEvent(tempString);

为什么以及何时需要使用静态?

最佳答案

静态事件实际上非常危险,而且(幸运的是)也很少见。与任何静态的东西一样,当它一般适用于类型时,您会使用它,而不是任何特定实例。即便如此,您也可能会在单例实例中看到它,而不是将其视为静态事件。

危险在于很容易忘记取消订阅,并最终使大量对象永远存活;与大多数基于实例的事件相反 - 通常,实例最终会超出范围,从而使委托(delegate)可收集(委托(delegate)实例将使目标实例保持事件状态)。

关于c# - 代表和事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1318574/

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