列挙型(enum)の基礎:初学者向け解説とサンプルコード


1. 列挙型(enum)とは?

列挙型は、 関連する値を一つにまとめて管理する仕組み です。
例えば、曜日やキャラクターの職業など、限られた選択肢をプログラムで扱うときに使います。
数字や文字列を直接使うのではなく、名前で分かりやすく扱える のが特徴です。


2. サンプルコード:曜日を表す列挙型

using System;

// 曜日を表す列挙型
enum DayOfWeek
{
    Sunday,    // 0
    Monday,    // 1
    Tuesday,   // 2
    Wednesday, // 3
    Thursday,  // 4
    Friday,    // 5
    Saturday   // 6
}

class Program
{
    static void Main()
    {
        // 1. 今日の曜日を設定
        DayOfWeek today = DayOfWeek.Wednesday;

        // 2. 曜日を表示
        Console.WriteLine($"今日は {today} です。"); // -> 今日は Wednesday です。

        // 3. 数値として曜日を確認
        int dayNumber = (int)today;
        Console.WriteLine($"今日は {dayNumber} 日目です。"); // -> 今日は 3 日目です。

        // 4. 条件分岐で使う
        if (today == DayOfWeek.Wednesday)
        {
            Console.WriteLine("週の真ん中ですね。頑張りましょう!");
        }
    }
}

3. コードのポイント

1. 列挙型を定義する

enum DayOfWeek
{
    Sunday,
    Monday,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday
}
  • 目的: 曜日をプログラムで扱いやすくするために、名前を定義。
  • 数値の代わりに MondayFriday など 分かりやすい名前 を使える。

2. 列挙型を変数に代入

DayOfWeek today = DayOfWeek.Wednesday;
  • 列挙型を変数に格納することで、「今日が何曜日か」を管理できます。

3. 値を表示する

Console.WriteLine($"今日は {today} です。");
  • 列挙型の値をそのまま表示すると、名前(例: Wednesday)が出力されます。

4. 数値として扱う

int dayNumber = (int)today;
  • 列挙型を 数値に変換 する場合は (int) を使います。
  • 例えば、Wednesday は列挙型内で 3 番目なので数値 3 に変換されます。

5. 条件分岐で使う

if (today == DayOfWeek.Wednesday)
{
    Console.WriteLine("週の真ん中ですね。頑張りましょう!");
}
  • 列挙型の値を条件として使うことで、プログラムの流れを分岐できます。

4. 列挙型を使うメリット

  1. コードが読みやすい
    • DayOfWeek.Monday の方が 1 より直感的です。
  2. エラーを減らせる
    • 列挙型以外の値(例: 文字列 Funday)は指定できません。
  3. 変更に強い
    • 列挙型を変更しても、プログラム全体に影響しにくいです。

5. 練習問題

課題1: 季節を表す列挙型

自分で季節(春、夏、秋、冬)を表す列挙型を定義し、現在の季節に応じてメッセージを表示するプログラムを書いてみましょう。

課題2: ゲームキャラクターの職業

ゲームキャラクターの職業(例: 戦士、魔法使い、弓使い)を列挙型で定義し、選択した職業に応じたメッセージを表示するプログラムを作成してみてください。


6. まとめ

列挙型は、 「限られた選択肢」 を管理するのに便利な仕組みです。
これを使うことで、コードが読みやすくなり、エラーも減らせます。
まずは、簡単な例から始めて、自分で応用できるように練習してみましょう!

列挙型

Posted by hidepon