首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >这是静态类的好用法吗?

这是静态类的好用法吗?
EN

Stack Overflow用户
提问于 2011-11-11 22:25:40
回答 3查看 224关注 0票数 3

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-11-11 23:22:07

静态类没有什么问题。您也可以使用缓存,这将以类似的方式工作。缓存为您提供了额外的好处,即能够根据您的选择定时使缓存无效。

票数 2
EN

Stack Overflow用户

发布于 2011-11-11 22:28:05

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

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

票数 2
EN

Stack Overflow用户

发布于 2011-11-11 22:38:29

您应该了解静态属性是如何存储的。

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

鉴于此,这个集合将在所有实例之间共享,但您应该记住所有潜在的内存泄漏(想象一下当您订阅集合事件时,所有页面即使在关闭时也变得可访问的情况)。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8095330

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档