常量 vs. 静态只读变量

26

可能是重复问题:
const和readonly有什么区别?

根据我所了解的,在C#中,conststatic readonly都可以使一个值在程序执行期间不可改变。

然而,const应该与那些不太可能改变的量一起使用(例如圆周率、地球半径、加仑每升等)。

另一方面,static readonly应该与当前是常量但将来可能会更改的值一起使用(例如软件版本、算法中的乘数等)。

我理解得对吗?


实际上这是重复的: https://dev59.com/hXRA5IYBdhLWcg3w_DHF我在发帖之前就看到了,但它在用简单的英语解释之前深入探讨了。 - s5s
这是一个不错的链接,特别是第二个答案涉及到const和static readonly之间编译差异方面的内容。 - Dunes
1个回答

35

我不了解你的第二个条目(如果是软件版本或算法,我可能会使用常量…与常量)但两者之间有一个关键区别:const 只能保存基本类型,如 stringbool 或数值类型。static readonly 可以保存任何对象。因此,例如,我经常使用static readonly来存储像Bitmap对象这样的资源。这些不能是const


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接