1

ご挨拶、

私はオブジェクト指向とプログラミングの初心者で、次のような状況にあります。

実装するいくつかのクラスが共有する const 値と列挙型のセットがあります。

これらのクラスは独立しています。つまり、これらの値を共有する以外は相互に作用しないため、継承は機能しません。

私は考えていた; これらの定数と列挙型だけで空のクラスを作成し、各クラスでこれらのクラスのオブジェクトを宣言すると、次のようにこれらの値を使用できます。

globals.enum.enummember?

これはサウンドプログラミングですか、それとももっと良い方法はありますか?

御時間ありがとうございます。

4

2 に答える 2

2

ベスト プラクティスは、クラスにネストするのではなく、クラスと一緒に単に列挙型を宣言することです。実際には、ネストされた型は、プライベートでない限り、通常は悪い考えです。もちろん例外もありますが、ほとんどの場合、ネストしないほうがよいでしょう。

定数はクラスで定義する必要がありますが、それらを使用するためにクラスのオブジェクトをインスタンス化する必要はありません。また、パブリックにすることもできるため、何も継承する必要はありません。よく考えれば、これらの定数を含むクラスの適切な名前を見つけられるはずです。

実際には、定数と列挙型が単純にグローバルであることはめったにありません。ほとんどの場合、それらは 1 つまたはいくつかのクラスと密接に結合されています。次に、これらの定数を適切なクラスの一部として定義し、それらを使用するクラスと同じ名前空間に列挙型を配置する必要があります。

于 2010-01-07T13:32:51.713 に答える
1

静的メンバーで静的クラスを使用して、目的の動作を実現できます。

namespace A {
    public static class Enum1 {
       public static readonly int EnumMember1 = 1;
       public static readonly int EnumMember2 = 2;
       public static readonly int EnumMember3 = 3;
    }
}

これを次のように使用する必要があります。

int x = A.Enum1.EnumMember2;
于 2010-01-07T13:34:24.100 に答える