为什么不能在类中声明const静态字符串?必须使用静态只读
答案 0 :(得分:20)
在C#语言(以及PHP)中,const
隐式static
,因此您不能同时使用这两个关键字。这与C和C ++不同,其中const
没有说明变量是否是静态的,只是它的值不可修改。
你声明一个像这样的常量字符串:
const string SomeConstant = "abc";
const
字段与静态readonly
字段之间也存在细微差别,但两者都相似,因为您无法更改其值。详细信息位于this question。
答案 1 :(得分:1)
所有常量声明都是 隐式静态和C# 规范说明了 (冗余)包含静态 修饰符是禁止的。我相信这一点 是为了避免可能造成的混乱 如果读者看到两个,就会发生 常量,一个声明为静态,一个 不是 - 他们可以轻易地假设 规格的差异 暗示了语义上的差异。 话虽如此,没有 禁止冗余指定 一个访问修饰符也是 默认值一,有选择权。 例如,(具体)方法可以 被明确标记为私人 尽管这是默认的。该 规则似乎是存在的地方 没有选择(例如方法声明 在一个接口)冗余 修饰符是禁止的。哪里有 一个选择,这是允许的。
取自here
答案 2 :(得分:0)
我已经写了一篇关于此的博客,这将使您更好地理解。看看http://anishmarokey.blogspot.com/2009/09/const-vs-fields.html
大多数primitive
类型用作static readonly