C# 一个拥有40个常量的类应该声明为静态还是非静态?

C# 一个拥有40个常量的类应该声明为静态还是非静态?,c#,C#,有一个类只包含约40个常量,这个类可以声明为“静态”和“非静态”,因为它对我们访问这些常量的方式没有任何影响 我的问题是选择哪一个,为什么?这里的最佳实践是什么 public static class IdConstants { public const string a1= "a1" // 40 more constants } public class IdConstants { public const string a1= "a1" // 40 mo

有一个类只包含约40个常量,这个类可以声明为“静态”和“非静态”,因为它对我们访问这些常量的方式没有任何影响

我的问题是选择哪一个,为什么?这里的最佳实践是什么

public static class IdConstants
{
    public const string a1= "a1" 
    // 40 more constants
}

public class IdConstants
{
    public const string a1= "a1" 
    // 40 more constants
}

该类应该是
静态的
,不是因为它声明了常量,而是因为它声明了常量,所以它永远不会被实例化

如果类具有非静态成员或将被继承,则它不应是静态的


作为旁白,一类形式

public static class IdConstants
{
    public const string a1 = "a1";
    public const string a2 = "a2"; 
    // ...
    public const string a41 = "a41";
}

表示设计有问题,但我怀疑您只是想用一个简单的示例来说明您的问题。

如果您不打算实例化该类,请将其设置为静态。
const
对象始终是
静态的,如果在实例级别上没有其他有意义的属性/方法,我会选择
静态类。如果出现第41位或第42位,这类数字一点也不奇怪,你真的想重新编译以支持这一点吗?另一方面,可能是一个或多个枚举比独立常量更合适。@Damien_不相信我的人,我只是想了解枚举如何比40个独立常量更好。这些常量不相关,但类型相同。谈到重新编译,我在MSDN上看到了一些让我更加困惑的东西:
与任何常量一样,对枚举的各个值的所有引用都在编译时转换为数字文本。这可能会产生常量中所述的潜在版本控制问题。
如果这些常量“不相关”,为什么要将它们全部放在一个类中?不要仅仅因为它们属于同一“类型”(即常数),就将它们放在同一个容器中