我将它们用作不同对象之间的“通信”,作为发布者和订阅者模式。
有些例子我看到有时事件被声明为静态,有时它不是:
public delegate void LogProgress(string str)
public static event LogProgress LogProgressEvent;
if (LogProgressEvent != null)
LogProgressEvent(tempString);
为什么以及何时需要使用静态?
答案 0 :(得分:8)
静态事件实际上非常危险,而且(幸运的是)也非常罕见。与静态的任何东西一样,当它一般适用于类型时,你会使用它,而不是任何特定的实例。即便如此,您可能会在单例实例上看到它,而不是静态事件。
危险在于忘记取消订阅很容易,并最终使群众的物品永远存在;与大多数基于实例的事件形成对比 - 通常,实例最终将超出范围,使委托可收集(委托实例将使目标实例保持活动状态)。
答案 1 :(得分:0)
应用于事件的静态与将静态应用于任何其他C#字段没有区别。
静态事件随时可供调用者使用,即使该类的实例不存在也是如此。我想如果你想从静态方法引发事件,静态事件将是有用的
中查看使用静态事件的含义