21

ネストされたクラスを使用して定数をグループ化することの何が問題になっていますか?

そのようです:

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);

「定数」クラスを部分的にすることもできます...

4

3 に答える 3

22

public ネストされたクラスに対するいくつかのガイドライン(fx 4.5 用に更新) があります。

√ DO 入れ子になった型とその外側の型の間の関係が、メンバーのアクセシビリティ セマンティクスが望ましいようなものである場合は、入れ子になった型を使用します。

X AVOID 公開されたネストされた型。これに対する唯一の例外は、ネストされた型の変数を、サブクラス化やその他の高度なカスタマイズ シナリオなどのまれなシナリオでのみ宣言する必要がある場合です。

X DO NOT ネストされた型は、含まれている型の外部で型が参照される可能性が高い場合に使用します。

あなたの例は最初のポイントと一致すると思います(つまり、あなたは上手です)。

于 2010-05-31T19:49:25.980 に答える
3

誰が間違っていると言った?定数は、クラス階層のどこにでも定義できます (定義されています)。

于 2010-05-31T19:23:24.453 に答える
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";
    }
}
于 2010-05-31T20:19:01.627 に答える