0Pricing
C# Academy · レッスン

列挙型の定義と使用

明示的な値と暗黙的な値を持つ列挙型を作成します。

「列挙型の定義と使用」はCoddyKit上の無料C# Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはC# Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 C# Academyコースには全4レッスンが含まれています。

列挙型とは

enum は、関連する定数に名前を付けてまとめたものです。意味のないマジックナンバーを意味のある名前に置き換えることで、コードを読みやすくします。

using System;

enum Direction { North, East, South, West }
class Program {
    static void Main() {
        Direction d = Direction.East;
        Console.WriteLine(d);
    }
}

列挙型の宣言

enum キーワードを使い、メンバーを列挙して宣言します。既定では最初のメンバーが0、次が1、その次が2というように値が割り当てられます。

using System;

enum Day { Mon, Tue, Wed }
class Program {
    static void Main() {
        Console.WriteLine((int)Day.Mon);
        Console.WriteLine((int)Day.Wed);
    }
}

基になる値のカスタマイズ

数値を明示的に割り当てることもできます。値を指定しないメンバーには、直前の値から続く値が割り当てられます。

using System;

enum Status { Active = 1, Paused = 5, Stopped }
class Program {
    static void Main() {
        Console.WriteLine((int)Status.Stopped);
    }
}

基になる型の選択

列挙型は既定で int を使用しますが、領域を節約するために byte などの別の整数型を選ぶこともできます。

using System;

enum Level : byte { Low = 1, High = 200 }
class Program {
    static void Main() {
        Console.WriteLine((byte)Level.High);
    }
}

変数での列挙型の使用

列挙型は、ほかの型と同じように変数、パラメーター、フィールドの型として使用できます。

using System;

enum Color { Red, Green, Blue }
class Program {
    static void Describe(Color c) {
        Console.WriteLine("Color is " + c);
    }
    static void Main() {
        Describe(Color.Green);
    }
}

switch での列挙型の使用

列挙型は switch と組み合わせると、明確で漏れのない分岐を記述できます。

using System;

enum Signal { Stop, Go, Caution }
class Program {
    static void Main() {
        Signal s = Signal.Go;
        switch (s) {
            case Signal.Stop: Console.WriteLine("Halt"); break;
            case Signal.Go: Console.WriteLine("Move"); break;
            default: Console.WriteLine("Slow"); break;
        }
    }
}

列挙値の比較

列挙値は == で比較でき、大小比較演算子では基になる数値に基づいて比較されます。

using System;

enum Priority { Low, Medium, High }
class Program {
    static void Main() {
        Console.WriteLine(Priority.High > Priority.Low);
    }
}

列挙型の既定値

初期化されていない列挙型の値は、値が0のメンバーと等しくなります。0には None のような妥当な既定値を割り当てるのがよい方法です。

using System;

enum Mode { None, Fast, Slow }
class Program {
    static void Main() {
        Mode m = default;
        Console.WriteLine(m);
    }
}

列挙型の名前を表示する

ToString を呼び出すか列挙型を表示すると、メンバー名が出力されます。生の数値よりもはるかに明確です。

using System;

enum Fruit { Apple, Banana, Cherry }
class Program {
    static void Main() {
        Console.WriteLine(Fruit.Banana.ToString());
    }
}

列挙型で読みやすさを向上させる

整数をそのまま渡す場合と比べて、列挙型は意図を示し、不正な値を防ぎます。

using System;

enum Size { Small, Medium, Large }
class Program {
    static int PriceFor(Size s) {
        return s == Size.Large ? 12 : 8;
    }
    static void Main() {
        Console.WriteLine(PriceFor(Size.Large));
    }
}

列挙型を宣言する場所

列挙型は名前空間レベルにもクラス内にも配置できます。使用するコードの近くに置くようにしてください。

using System;

class Program {
    enum Phase { Start, Run, End }
    static void Main() {
        Console.WriteLine(Phase.Run);
    }
}

クイックチェック

列挙型についての理解度を確認しましょう。

まとめ

enum は名前付き定数の集合を定義し、マジックナンバーよりもコードを読みやすくします。メンバーには既定で0、1、2…が割り当てられますが、値を明示的に指定したり、基になる整数型を変更したりできます。

列挙型は変数、switch、比較で効果的に使用できます。表示するとメンバー名になり、既定値は値が0のメンバーです。

よくある質問

「列挙型の定義と使用」レッスンは無料ですか?

はい。「列挙型の定義と使用」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、C# Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 C# Academyコースには全4レッスンが含まれています。

「列挙型の定義と使用」で何を学びますか?

明示的な値と暗黙的な値を持つ列挙型を作成します。 ブラウザで直接実行するハンズオンコードでC# Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

C# Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのC# Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「列挙型の定義と使用」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このC# Academyレッスンでコードを書いて実行できますか?

はい。すべてのC# Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 列挙型の定義と使用
  2. Flags列挙型とビット演算による組み合わせ
  3. 列挙型の変換と解析
  4. 列挙値の反復処理
← C# Academyに戻る