本文へスキップ
BecomeCoder

C#オブジェクト指向コース · 第2章 型を表現する · レッスン16

enum(列挙型)

ブラウザで完結

導入

「曜日」「信号の色」「注文の状態」のように選択肢が決まっている値は、文字列や数値で持つよりenum(列挙型)で表すと、タイプミスを防ぎ、意図が明確になります。

図解

flowchart LR
    E["enum Status"] --> S1["Pending(受付中)"]
    E --> S2["Shipped(発送済)"]
    E --> S3["Delivered(配達完了)"]
    style E fill:#e1f5fe

サンプル

Status status = Status.Shipped;

// switch式と相性が良い
string message = status switch
{
    Status.Pending => "受付中です",
    Status.Shipped => "発送しました",
    Status.Delivered => "配達完了",
    _ => "不明",
};
Console.WriteLine(message);   // 発送しました

// enum: 決まった選択肢に名前を付けた型
enum Status
{
    Pending,
    Shipped,
    Delivered,
}
  • enum 名前 { 選択肢1, 選択肢2, ... } で定義する
  • Status.Shippedのように「型名.選択肢」で使う
  • 決まった値しか取れないので、タイプミスや不正値を防げる。switch式と好相性

演習

Signal signal = Signal.Red;

// TODO: enum Signal(Red, Yellow, Green)を定義し、
//       switch式で Red なら "止まれ" を action に入れて出力してください
___
  • 期待される出力: 止まれ
ヒント1を見る

enum Signal { Red, Yellow, Green }

ヒント2を見る

string action = signal switch { Signal.Red => "止まれ", Signal.Yellow => "注意", Signal.Green => "進め", _ => "" }; Console.WriteLine(action);

まとめ

  • enumは決まった選択肢に名前を付けた型
  • タイプミス・不正値を型で防げる
  • switch式と組み合わせて分岐を明確に書ける

次回: 選択肢を組み合わせられる[Flags] enumとビット演算です。

実際に動かしてみよう

本文のサンプルや演習のコードは、コードブロック右上の「コピー」ボタンでコピーして、下のエディタに貼り付ければそのまま実行できます。

C# — ブラウザ内で実行

ブラウザ内でC#を動かす環境を読み込みます(初回のみ数秒)。
スクロールして表示された時点でも自動で読み込まれます。