繁体   English   中英

这对静态类很好用吗?

[英]Is this a good use for a static class?

我有一个只读列表,在应用程序的所有实例之间共享,并且不会经常更改。 在静态类上创建属性以访问此列表是一种好习惯吗? 列表从静态构造函数中的数据库填充。 将应用程序池设置为每晚重新循环可以保证列表每天都是最新的正确吗? 有什么理由这是个坏主意吗? 谢谢!

这看起来是个很好的解决方案。 您可能希望使用密封类,以避免子类弄乱它。

全局状态的问题在于应用程序正在更改它。 在这种情况下,这不是问题。

静态类没有错。 您也可以使用缓存,它可以以类似的方式工作。 缓存为您提供额外的好处,即能够在您选择的时间基础上使缓存无效。

您应该了解静态属性的存储方式。

粗略地说,所有静态都放在RuntimeType的实例中(反过来,它是在调用静态ctor时创建的)。 CLR通过C#详细描述了这种机制。

鉴于此,此集合将在所有实例中共享,但您应该记住所有可能的内存泄漏(想象一下当您订阅集合事件时所有页面即使在它们关闭时也可以访问等等。)

这种方法的第二个缺点是这个集合不是最新的。 第三个缺点是你需要注意这个系列的线程安全性,这反过来会损害你的性能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM