为什么不能在类中声明const静态字符串

时间:2011-05-05 10:51:31

标签: c#

为什么不能在类中声明const静态字符串?必须使用静态只读

3 个答案:

答案 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

的常量其他类型