首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >字符串常量类应该是静态的吗?

字符串常量类应该是静态的吗?
EN

Stack Overflow用户
提问于 2013-10-30 23:52:30
回答 5查看 12.8K关注 0票数 19

我正在做一个新的项目,我注意到了一些我不确定是真的代码。我用来演示这个问题的名称和值是假的。

代码语言:javascript
复制
public class MyConsts //Should it be static?
{
    public const string MyConst1 = "a";
    public const string MyConst2 = "b";
    public const string MyConst3 = "c";
    public const string MyConst4 = "d";
    ....
}

对于我的逻辑,这个类(只包含const值)应该是静态的,所以没有初始化它的选项,这是没有意义的,我说的对吗?

编辑:我写代码是盲目的,所以我混淆了字符串和常量的顺序-因为这不是我问题的目标,所以我已经解决了这个问题。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-10-30 23:54:18

是的,它是静态的是有意义的。这表明了你的意图,甚至阻止了客户端声明该类型的变量,等等。

不过,您需要将const修饰符移动到类型部分之前:

代码语言:javascript
复制
public const string MyConst1 = "a";
...

如果值可能发生更改,请考虑使用public static readonly字段而不是const字段-否则该值将被烘焙到引用常量的任何代码中,这意味着如果值发生更改,您需要重新构建任何客户端代码。

(另一种选择是将常量设置为internal而不是public。)

票数 35
EN

Stack Overflow用户

发布于 2013-10-30 23:56:39

是的,这个类应该是static。但是相关的,如果这些值实际上是const

任何声明的const都将被编译成任何引用的程序集,因此,如果这是一个类库,并且您发布了一个对这些常量值进行了更改的新版本,它们将不会被引用它们的程序集拾取。

在这种特殊情况下,public static readonly string是有意义的。

但是,如果这些只在单个特定的程序集中可见(例如,控制台应用程序或WinForms应用程序),那么您应该声明类internalconst没有问题。

票数 6
EN

Stack Overflow用户

发布于 2013-10-30 23:54:40

是的,如果值永远不变,它应该是静态的。正如您所说,允许客户端代码实例化它是没有意义的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19687647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档