我想知道我们是否可以将事件声明为静态(如果可以)为什么以及此类声明的应用。
请提供样品,眼见为实
您可以创建静态事件。使用它们的方式与普通事件相同,只不过它是在类内的静态上下文中使用。
public class MyClass
{
public static event EventHandler MyEvent;
private static void RaiseEvent()
{
MyEvent?.Invoke(typeof(MyClass), EventArgs.Empty);
}
}
话虽这么说,静态事件存在很多问题。您必须格外小心地取消对象对静态事件的订阅,因为对静态事件的订阅将根植您的订阅实例,并阻止垃圾收集器收集它。
另外,我发现在大多数情况下我想要创建静态事件,我倾向于学习在辛格尔顿 https://csharpindepth.com/Articles/Singleton反而。这处理与静态事件相同的场景,但(IMO)更明显的是您正在订阅“全局”级别的实例。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)