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