列挙型をクラスに置き換えてみる

はじめに

こんにちは、東京アプリケーションシステム 第二ソリューション部のK.Tです。
「列挙型をクラスに置き換えてみる」ということで、今回は、列挙型とクラスについての内容となります。

列挙型

列挙型について簡単に説明すると、列挙型は、名前と整数値を持つ型です。
主にマジックナンバーを避ける為の定数値の定義として使用されます。
C#では、下記のように宣言できます。

クラスで実装

列挙型と同様の実装をクラスで行いたいと思います。
列挙型は、名前と整数値を持つので、NameとNumのプロパティを持つ基底クラスを作成します。

基底クラスを継承した、Statusというクラスを定義し、さらにStatusを継承したEnabledTypeとDisabledTypeを実装します。

これで、列挙型と似た実装をすることができました。
もちろん、列挙型には、他に便利な関数が用意されているので、同様の実装とは程遠い状態です。
C#では、列挙型に実装を書けない為、クラスで実装したほうが便利な場合があります。

まとめ

今回は、列挙型を簡易的にクラスに置き換えてみました、特に利点等について説明しませんでしたが、
Open Closedの原則に違反しないコーディングを行うためには、列挙型ではなく、クラスを使用した場合が良い場合もあります。