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