カテゴリ: C# 更新日: 2025/07/01

C#の列挙型(enum)とは?定義方法と活用例を初心者向けに解説

C#の列挙型(enum)とは?定義方法と活用例を初心者向けに解説
C#の列挙型(enum)とは?定義方法と活用例を初心者向けに解説

先生と生徒の会話形式で理解しよう

生徒

「C#で何かの状態や種類を分かりやすく管理する方法ってありますか?」

先生

「ありますよ!そういうときには列挙型(enum)を使うと便利です。」

生徒

「列挙型?なんだか難しそうですね……」

先生

「大丈夫!とてもシンプルで、未経験者でもすぐに理解できます。では順番に説明していきましょう。」

1. 列挙型(enum)とは?

1. 列挙型(enum)とは?
1. 列挙型(enum)とは?

列挙型(enum)とは、関連する値をひとつにまとめて管理するための型です。たとえば、曜日(Monday, Tuesday, ...)や信号の色(Red, Yellow, Green)など、「限られた選択肢の中から1つを選ぶ」ような場合に便利です。

プログラムで何かの「状態」や「種類」を使い分けたいとき、数字で管理すると分かりにくくなります。そこでenumを使うと、名前で分かりやすく扱えるようになります。

2. 列挙型を使わないとどうなる?

2. 列挙型を使わないとどうなる?
2. 列挙型を使わないとどうなる?

例えば、交通信号の色を数字で管理すると、次のようになります。


int signal = 1;

if (signal == 1)
{
    Console.WriteLine("赤信号です");
}

これでは、1が赤なのか、2が青なのか、プログラムを読んだだけではわかりません。

3. 列挙型の基本的な定義方法

3. 列挙型の基本的な定義方法
3. 列挙型の基本的な定義方法

C#では、列挙型をenumキーワードを使って定義します。以下が基本形です。


enum SignalColor
{
    Red,
    Yellow,
    Green
}

このように書くと、SignalColor.RedSignalColor.Greenのように、名前付きで状態を使えるようになります。

4. enumを使ったサンプルプログラム

4. enumを使ったサンプルプログラム
4. enumを使ったサンプルプログラム

先ほどの交通信号の例をenumを使って書き直してみましょう。


using System;

enum SignalColor
{
    Red,
    Yellow,
    Green
}

class Program
{
    static void Main()
    {
        SignalColor signal = SignalColor.Red;

        if (signal == SignalColor.Red)
        {
            Console.WriteLine("赤信号です。止まってください。");
        }
        else if (signal == SignalColor.Yellow)
        {
            Console.WriteLine("黄色信号です。注意してください。");
        }
        else if (signal == SignalColor.Green)
        {
            Console.WriteLine("青信号です。進んでください。");
        }
    }
}

赤信号です。止まってください。

このようにenumを使うと、コードが読みやすくなり、何の値を扱っているかがひと目でわかるようになります。

5. enumの内部的な仕組み

5. enumの内部的な仕組み
5. enumの内部的な仕組み

enumは、内部的には整数(int)で管理されています。先ほどのSignalColorでは、次のような対応になっています。

  • SignalColor.Red → 0
  • SignalColor.Yellow → 1
  • SignalColor.Green → 2

もし数字を指定したい場合は、次のように書くこともできます。


enum SignalColor
{
    Red = 10,
    Yellow = 20,
    Green = 30
}

6. enumの活用例:ユーザーの権限レベル

6. enumの活用例:ユーザーの権限レベル
6. enumの活用例:ユーザーの権限レベル

enumは状態以外にも、「役割」や「カテゴリ分け」にも使えます。例えば、ユーザーの種類を管理する場合も便利です。


enum UserRole
{
    Guest,
    Member,
    Admin
}

このようにすれば、ユーザーの役割に応じた処理をわかりやすく記述できます。


UserRole role = UserRole.Admin;

if (role == UserRole.Admin)
{
    Console.WriteLine("管理者ページにアクセス可能です。");
}

7. enumの値を文字列として表示する

7. enumの値を文字列として表示する
7. enumの値を文字列として表示する

enumの値を画面に表示したい場合、ToString()メソッドを使えば、名前(文字列)として取り出せます。


SignalColor signal = SignalColor.Green;
Console.WriteLine(signal.ToString());

Green

これにより、enumの値を画面やログに出力するのも簡単です。

8. 数値からenumに変換する

8. 数値からenumに変換する
8. 数値からenumに変換する

数値からenumの値に変換したい場合は、(Enum名)数字の形でキャストします。


int num = 1;
SignalColor color = (SignalColor)num;
Console.WriteLine(color);

Yellow

ただし、定義されていない数値を指定すると想定外の動作になる可能性があるので注意しましょう。

カテゴリの一覧へ
新着記事
COBOLの変数名の付け方を解説!初心者でもわかる命名規則とコツ
C#のbreakとcontinueの使い方!ループ制御の基本テクニック
COBOLのFILLERの使い方とは?未使用領域を上手に管理する基本テクニック
C#のforeach文の基本!配列やコレクションを簡単に繰り返し処理する方法
人気記事
No.1
Java&Spring記事人気No1
COBOLのDISPLAY文の使い方を完全ガイド!初心者でもわかる出力方法
No.2
Java&Spring記事人気No2
C#のwhile文の使い方!条件付きループを基礎から学ぼう
No.3
Java&Spring記事人気No3
C#で型を調べる方法!GetType()・typeof演算子の違いと使い方
No.4
Java&Spring記事人気No4
COBOLのINDEXED BY句を使ったインデックス管理の基本をやさしく解説!