alunote’s blog

C#,SQL,JavaScriptなどの技術メモをゆっくり投稿しています。

【C#】列挙型(Enum)について

今回は列挙型(Enum)について記述します。
そもそも列挙型とは。。。
特定の値しかとらないものに対して使う型です。
例えば、曜日や年号などなど。。。

Enumで表現できそうなもの
お決まりのパターンやほぼ変わることのないものが適しています。
例えば以下のようなものです。
・年号(…、明治、大正、昭和、平成)
都道府県(北海道、青森、…、沖縄)
・曜日(月、火、水、木、金、土、日)
・通貨(円、ドル、ユーロ…)

Enumに適さないもの
値が変動するものや情報が多いものは適していないと考えます。
例えば以下のようなものです。
・犬の種類 ・・・ 種類が多すぎるため。
・カレンダー(年月日) ・・・ データ量が膨大なため。
・ユーザー情報 ・・・ 頻繁に変わるため。

◆備考
「普通にint型でバァーっと書けばいいんじゃね?」という意見もあると思いますが、
・膨大なデータ量でなければenumの方が管理しやすい。
enumを使用することで可読性を向上できる。
という考えからenumの方をお勧めします。

次に、実際にenumを使用し月(12カ月)を定義してみます。

enumソースコード

using System;

class Task_3
{
    public enum Month : int
    {
        January = 1,
        February = 2,
        March = 3,
        April = 4,
        May = 5,
        June = 6,
        July = 7,
        August = 8,
        September = 9,
        October = 10,
        November = 11,
        December = 12,
    }

    public static void Main()
    {
        string format = "{0, -10} … {1}月", line = "*=------------------=*";
        Console.WriteLine(line);
        Console.WriteLine(format, "January", (int)Month.January);
        Console.WriteLine(format, "February", (int)Month.February);
        Console.WriteLine(format, "March", (int)Month.March);
        Console.WriteLine(format, "April", (int)Month.April);
        Console.WriteLine(format, "May", (int)Month.May);
        Console.WriteLine(format, "June", (int)Month.June);
        Console.WriteLine(format, "July", (int)Month.July);
        Console.WriteLine(format, "August", (int)Month.August);
        Console.WriteLine(format, "September", (int)Month.September);
        Console.WriteLine(format, "October", (int)Month.October);
        Console.WriteLine(format, "November", (int)Month.November);
        Console.WriteLine(format, "December", (int)Month.December);
        Console.WriteLine(line);
    }
}

enumの実行結果
f:id:alunote:20180926100003p:plain

以上です。
この記事が誰かの役に立つことを祈ります。