C# enum: 列挙型


列挙型 (「列挙子」とも呼ばれます) は、独立した識別子 (名前) を持つ一連の整数型定数で構成されます。C# では、列挙型はクラスまたは構造体の内部だけでなく、外部宣言でも宣言できます。クラスまたは構造体のデフォルトでは、列挙型のメンバーのデフォルト値は 0 から始まり、1 つずつ増加します。

C# では、enum キーワードを使用して列挙型を宣言できます。構文形式は次のとおりです。

enum enum_name{
    enumeration list;
}

このうち、enum_name は列挙型変数の名前であり、列挙リストは列挙型のメンバーのリストであり、カンマで区切られた複数の識別子が含まれており、各識別子は整数値を表します。

列挙型を使用する場合は、次の点に注意してください。

  • メソッドは列挙型で定義できません。
  • 列挙型には固定の定数セットがあります。
  • 列挙型によりタイプの安全性が向上します。
  • 列挙型は反復処理できます。

次の例は、列挙変数の使用を示しています。

 using System;

namespace it-kiso.com
{
    class Demo
    {
        enum Day { Sun, Mon, Tue, Wed, Thu, Fri, Sat };
        static void Main(string[] args) 
        { 
            Console.WriteLine("Sun = {0}", (int)Day.Sun);
            Console.WriteLine("Mon = {0}", (int)Day.Mon);
            Console.WriteLine("Tue = {0}", (int)Day.Tue);
            Console.WriteLine("Wed = {0}", (int)Day.Wed);
            Console.WriteLine("Thu = {0}", (int)Day.Thu);
            Console.WriteLine("Fri = {0}", (int)Day.Fri);
            Console.WriteLine("Sat = {0}", (int)Day.Sat);
            Console.ReadKey();
        }
    }
} 

操作の結果は次のようになります。

Sun = 0
Mon = 1
Tue = 2
Wed = 3
Thu = 4
Fri = 5
Sat = 6

デフォルトでは、列挙型の各メンバーは int 型で、その値は 0 から始まり、定義の順序で順番に増加します。ただし、次のように、各列挙型のメンバーに値を明示的に割り当てることもできます。

enum ErrorCode
{
    None,
    Unknown,
    ConnectionLost = 100,
    OutlierReading = 200
}

[例] GetValues() を使用して、列挙型のすべてのメンバーを走査します。

 using System;

namespace it-kiso.com
{
    class Demo
    {
        enum Season {
            winter = 10,
            spring,
            summer = 15,
            autumn
        };
        static void Main(string[] args) 
        {
            foreach(Season i in Enum.GetValues(typeof(Season))){
                Console.WriteLine("{0} = {1}", i, (int)i);
            }
            Console.ReadKey();
        }
    }
} 

操作の結果は次のようになります。

winter = 10
spring = 11
summer = 15
autumn = 16

[例] GetNames() を使用して列挙型のすべてのメンバーを走査します。

 using System;

namespace it-kiso.com
{
    class Demo
    {
        enum Season {
            winter = 10,
            spring,
            summer = 15,
            autumn
        };
        static void Main(string[] args) 
        {
            foreach(String s in Enum.GetNames(typeof(Season))){
                Console.WriteLine(s);
            }
            Console.ReadKey();
        }
    }
} 

操作の結果は次のようになります。

winter
spring
summer
autumn

「 C# enum: 列挙型」についてわかりやすく解説!絶対に観るべきベスト2動画

【Java入門#22】列挙型(enum)