.NET Visual C#言語入門 > 列挙型(enum)
のぶ亭『プログラミングの相談窓口』 … 様々なプログラミング問題を個別対応致します |
列挙型(enum)
列挙型は、あるグループを数値と文字で定義します。
C# では、enum キーワードを使用して、複数の独自の名前付き定数を作成します。これらのデータ型を使用して、変数への割り当てが可能なすべての値を定義する名前、またはその他のリテラル値のセットを宣言できます。
※関連する複数の「定数」を意味のあるグループ(例えば月や曜日など)にまとめたイメージです。
列挙型のメリット
- プログラム上では文字表現となり、内部的には数値として扱われます。
- メソッドやプロパティに列挙型名を指定することができます。
- Visual Studioで編集する場合、列挙型名を入力すると、メンバの一覧が表示されるためメンバ名を忘れても安心です。
- 定数とは異なり、クラスの外に定義できるため、プログラム全体で共有することも可能です。
例
例えば、曜日を処理する定数が必要になった場合、次のように定義します。
- DayOfWeek という新しい型を作成します。
- DayOfWeek 型の新しい変数を宣言し、この変数に値を割り当てます。
public enum DayOfWeek { Sunday = 0, Monday = 1, Tuesday = 2, Wednesday = 3, Thursday = 4, Friday = 5, Saturday = 6 } class Sample { static void Main() { DayOfWeek Day = DayOfWeek.Monday; int No = (int)DayOfWeek.Monday; System.Console.WriteLine(Day); // "Monday"を表示 System.Console.WriteLine(No); // "1"を表示 } }
列挙型の特徴は、プログラム内部では数値データとして扱われますが、プログラム上では名称で扱うことができるため、コードが読みやすくなり、無効な値や予期しない値が変数に割り当てられる可能性が低くなります。
列挙型を使用する高度なテクニック
ここでは、enum データ型の便利な機能を紹介します。
列挙型のリテラル値の表示
enum データ型で使用する名前や単語にアクセスするには、ToString() メソッドを次のように使用します。
DayOfWeek day = DayOfWeek.Wednesday; System.Console.WriteLine(day.ToString());
既定値の設定
既定では、列挙型の 1 番目の値はゼロです。次のように、異なる初期値を指定できます。
enum Color { Red = 1, Yellow = 2, Blue = 3 };
実際に、すべての値に一意の整数値を定義できます。
enum Medal { Gold = 30, Silver = 20, Bronze = 10 }; class Calendar1 { public const int months = 12; }
書式
列挙型はプログラムの内部では整数として扱われていて、整数型に変換することでその値を取り出すことが出来ます。特に値や型を指定しなければ、列挙型はint
として扱われ、各メンバは宣言した順番に 0, 1, 2, …, n となります。
enum DayOfWeek
{
Mon, Tue, Wed, Thu, Fri, Sat, Sun
}
列挙型の型、値の明示的に指定
enum 列挙型名 : 内部的な型 { メンバ1 = メンバ1の値, メンバ2 = メンバ2の値, …, メンバn = メンバnの値 }
enum DayOfWeek : byte
{
Mon = 0x0001,
Tue = 0x0002,
Wed = 0x0004,
Thu = 0x0008,
Fri = 0x0010,
Sat = 0x0020,
Sun = 0x0040
}