【问题标题】:why cannot declare const static string inside a class为什么不能在类中声明 const 静态字符串
【发布时间】:2011-05-05 10:51:31
【问题描述】:

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

【问题讨论】:

标签: c#


【解决方案1】:

在 C# 语言(以及 PHP)中,const 隐含为 static,因此您不要同时使用这两个关键字。这与 C 和 C++ 不同,其中 const 没有说明变量是否是静态的,只是它的值是不可修改的。

你像这样声明一个常量字符串:

const string SomeConstant = "abc";

const 字段和静态readonly 字段之间也存在细微差别,但两者的相似之处在于您无法更改它们的值。详情在this question

【讨论】:

    【解决方案2】:

    所有的常量声明都是 隐式静态和 C# 规范指出, (冗余)包含静态 禁止修饰符。我相信这个 是为了避免可能造成的混乱 如果读者看到两个 常量,一个声明为静态的,一个 不是——他们很容易假设 规格差异 暗示语义上的差异。 话虽如此,没有 禁止重复指定 访问修饰符也是 默认一个,有选择的地方。 例如,一个(具体的)方法可以 被明确标记为私有 尽管这是默认设置。这 规则似乎是 没有选择(例如方法声明 在接口中)冗余 禁止修饰符。哪里有 一个选择,它是允许的。

    取自here

    【讨论】:

      【解决方案3】:

      我已经写了一篇关于这个的博客,这会让你更好地理解。看看http://anishmarokey.blogspot.com/2009/09/const-vs-fields.html

      大部分 primitive 类型用作常量,其他类型为 static readonly

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-04-04
        • 2011-01-23
        • 1970-01-01
        • 2010-09-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多