为什么不能在类中声明const静态字符串
为什么不能在类中声明const静态字符串? 必须使用静态只读
在C#语言(以及PHP)中, const
是隐式static
,所以你不要把两个关键字放在一起。 这不像C和C ++,其中const
不会说如果一个变量是静态的,只是它的值不可修改。
你声明一个像这样的常量字符串:
const string SomeConstant = "abc";
const
字段和静态readonly
字段之间也有细微差别,但两者都是相似的,因为您无法更改它们的值。 细节在这个问题。
所有常量声明都是隐式静态的,C#规范声明禁止使用静态修饰符(冗余)包含。 我相信这是为了避免如果读者看到两个常量,一个声明为静态而另一个不是 - 他们可以轻易地认为规范中的差异意味着语义上的差异可能会发生混淆。 话虽如此,没有禁止冗余地指定一个访问修饰符,这也是默认的访问修饰符,如果有选择的话。 例如,(具体)方法可以明确标记为私有,尽管这是默认的。 该规则似乎是在没有选择的情况下(例如,在界面中的方法声明),禁止使用冗余修饰符。 哪里有选择,这是允许的。
从这里采取
我已经写了一个关于这个的博客,这会给你一个更好的理解。看看http://anishmarokey.blogspot.com/2009/09/const-vs-fields.html
大多数primitive
类型用作常量,其他类型为static readonly
上一篇: why cannot declare const static string inside a class
下一篇: How do I default a parameter to DateTime.MaxValue in C#?