最近開発中の開発者は、通常は列挙型の代わりにクラスパターンを使用し始めました。彼の推論は、それが目に見えない列挙のように見えるということですが、彼は中に含まれる(上記IsMatchなど)命数に関連するメソッドを含めることができます列挙型ではなく、列挙型クラスをいつどのように使うべきですか?
internal class Suit
{
public static readonly Suit Hearts = new Suit();
public static readonly Suit Diamonds = new Suit();
public static readonly Suit Spades = new Suit();
public static readonly Suit Clubs = new Suit();
public static readonly Suit Joker = new Suit();
private static Suit()
{
}
public static bool IsMatch(Suit lhs, Suit rhs)
{
return lhs.Equals(rhs) || (lhs.Equals(Joker) || rhs.Equals(Joker));
}
}
:代わりに、彼は以下のものと同様のものを使用しています列挙自体。
彼はこれをEnumerationクラスと呼びましたが、これまでに見たことはありません。私は長所と短所がどこにあるのか、そしてどこでより多くの情報を見つけることができるのか疑問に思った。
おかげ
編集:彼は説明したもう一つの利点は、列挙のための特定のToString()の実装を追加することがされていました。
まあ上で読むことができます、あなたは 'enum'でこれを行うことはできません。私はこれがこのようなものを使用する主な理由だと思いますか? –
私が遭遇した唯一の本当の欠点は(それについてあまり幸せではないサードパーティ製のライブラリに加えて)あなたは(単純に)そのタイプのスイッチ/ケースを行うことができないということです。しかし、私はこの技術をC#で広範に使用していません。 –
スイッチのステートメントを避けることが彼の主なセールスポイントでした。彼はそれをモノリシックスイッチのステートメントとして記述するのを避けるために使っていました。しかし、あなたが望むときでさえ、あなたがそれらを使用するのを止める点です。 –