質問
ご挨拶、
私はOOプログラミングへの初心者だと私は次のような状況があります:
私はシェアを実装するクラスのいくつかのconst値や列挙型のセットを持っています。
これらのクラスは、これらの値を共有する以外、すなわち独立しており、彼らはお互いに相互作用しないので、それらを継承することはできません。
私は思っていました。私はこれらのconstsと列挙型と空のクラスを作成し、各クラスでこれらのクラスのオブジェクトを宣言する場合は、私が好き、これらの値を使用することができます:
globals.enum.enummember?
この音のプログラミングですかこれを行う良い方法はありますか?
あなたの時間をありがとうます。
解決
ベストプラクティスは、単にクラスにネストされていない、あなたのクラスと一緒に列挙型を宣言することです。彼らはプライベートでない限り、実際には、ネストされたタイプは、通常は悪い考えです。そこもちろん例外は、ですが、ほとんどの部分は、あなたは、ネストのない方がよいでしょう。
定数は、クラスで定義する必要がありますが、あなたはそれらを使用するクラスのオブジェクトをインスタンス化する必要はありません。また、彼らは、公開することができ、あなたは何を継承する必要はありません。あなたはそれについて十分に懸命と思われる場合は、これらの定数が含まれているクラスの良い名前を把握することができる必要があります。
の実践は、定数と列挙型はめったに単にグローバルでないことを示しています。彼らは密接に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;