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

在某些示例中,我看到有时将事件声明为静态,有时将其声明为静态:

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


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


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

最佳答案

静态事件实际上非常危险,并且(幸运的是)也非常罕见。与任何静态方法一样,您通常在将其应用于类型(而不是任何特定实例)时使用它。即使这样,您也可能会在单例实例上看到它,而不是将其视为静态事件。

危险在于,很容易忘记取消订阅,最终使大量物体永远活着。与大多数基于实例的事件形成对比-通常,实例最终将超出范围,使委托可收集(委托实例将使目标实例保持活动状态)。

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

10-10 23:27
查看更多