[英]Why does ReSharper prefer consts over readonly?
我注意到“通用实践和代码改进”下的 ReSharper 建议:将局部变量或字段转换为常量。
我还注意到,在 Bill Wagner 的著作《 Effective C#: 50 Specific Ways to Improvement Your C# 》一书中,有一个语言习语“ Prefer readonly to const ”,作者在其中解释了使用 consts 的风险。
我的问题不是关于 readonly 和 const 之间的区别以及何时使用它们,而是为什么一个来源将 const 作为一种常见的实践/代码改进,而另一方面,第二个来源将 readonly 视为一个成语?
私有常数不具有与公共常数相同的风险。 Resharper可能建议对场外不可见的情况进行性能优化。
根据我使用Resharper的经验,如果要在声明中设置变量值,则会得到此建议,但变量的值在整个方法中永远不会发生变化。 在这种情况下,它可以被制成局部常量。 您还将获得对您初始化的实例变量的警告,但不会更改类主体中任何位置的值。
该书的作者基本上认为,通过使用readonly
而不是const,如果更改readonly
值的值,则可以避免重建依赖程序集。 相比之下,对于改变一个const
,你必须重新编译依赖的组件对与组件的新版本的const
。
这是一个合理的论据,但是,如果一个值在应用程序的整个生命周期中都不会改变,我仍然认为使用const
更好。 我喜欢将readonly
用于我从配置中加载的值,例如,在构造函数中初始化后不会更改。
我认为使用const
提供的代码清晰度可能会花费更多的编译维护。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.