使用嵌套类作为常量?

时间:2010-05-31 19:17:52

标签: c# class-design constants nested-class

使用嵌套类对常量进行分组有什么问题?

像这样:

public static class Constants
{
    public static class CategoryA
    {
        public const string ValueX = "CatA_X";
        public const string ValueY = "CatA_Y";
    }
    public static class CategoryB
    {
        public const string ValueX = "CatB_X";
        public const string ValueY = "CatB_Y";
    }
}

像这样使用:

Console.WriteLine(Constants.CategoryA.ValueY);
Console.WriteLine(Constants.CategoryB.ValueX);

您还可以使“常量” - 类部分...

3 个答案:

答案 0 :(得分:19)

针对公共嵌套类有一些guideline(针对fx 4.5更新):

  

√当嵌套类型与其外部类型之间的关系需要成员可访问性语义时,请使用嵌套类型。

     

X AVOID公开暴露嵌套类型。唯一的例外是,嵌套类型的变量只需要在极少数情况下声明,例如子类化或其他高级自定义方案。

     

如果类型很可能在包含类型之外引用,则不要使用嵌套类型。

我认为你的例子符合第一点(即:你很好)。

答案 1 :(得分:4)

谁说这是错的?常量可以(并且)定义在类层次结构中的任何位置。

答案 2 :(得分:2)

不是说你所做的是错的,但是如何使用命名空间呢:

namespace Constants
{
    public static class CategoryA
    {
        public const string ValueX = "CatA_X";
        public const string ValueY = "CatA_Y";
    }
    public static class CategoryB
    {
        public const string ValueX = "CatB_X";
        public const string ValueY = "CatB_Y";
    }
}