こんにちは!エンジニアの中沢です。
C#には複数の定数をまとめて扱う場合に便利なenum(列挙型)があります。
enumはswitch-case文のcaseの値によく使用されます。
この記事では、
- enumとは
- enumの使い方
- enumをintに変換する方法
- intをenumに変換する方法
- enumを文字列に変換する方法
などの基本的な内容から、応用的な使い方に関しても解説していきます。
今回はこれらの方法を覚えるために、enum(列挙型)のさまざまな使い方をわかりやすく解説します!
enumとは
enumは列挙型を使用するために使います。列挙型とは名前の付いた定数の集まりです。
列挙型で定義される定数は列挙子リストと呼ばれます。デフォルトでは列挙子に、0(ゼロ)から順に整数値が付けられます。
付けられる整数値の型は、byte、sbyte、short、ushort、int、uint、long、ulongに限られています。
最初の値を0(ゼロ)以外で定義することも可能です。また、列挙子リストの途中から付ける整数値を変えることもできます。
enumの使い方
enumはswitch-case文と合わせてよく使われます。
caseの値にenumの列挙子を指定することで、条件分岐が読みやすくなります。
次のプログラムで確認してみましょう。
using System; namespace Sample { // enumの定義 enum Days { Mon, Tue, Wed, Thu, Fri, Sat, Sun } class Sample { static void Main() { Days day = Days.Wed; switch (day) { case Days.Mon: case Days.Tue: case Days.Wed: case Days.Thu: case Days.Fri: Console.WriteLine("平日です"); break; case Days.Sat: case Days.Sun: Console.WriteLine("休日です"); break; default: Console.WriteLine("不正です"); break; } Console.ReadKey(); } } }
実行結果:
平日です
このプログラムでは、入力された曜日が平日か休日かどうかをenumとswitch-case文を使って判定しています。
enumとint型を相互に変換する方法
enumをint型に変換する方法
ここでは、enumをint型に変換する方法を解説します。
enumの列挙子から値を取得するには、キャストをする必要があります。
次のプログラムで確認してみましょう。
using System; namespace Sample { // enumの定義 enum SamuraiEnum { Samurai = 0, Engineer = 1, Juku = 2 } class Sample { static void Main() { // そのまだまと列挙子の名前を取得する Console.WriteLine(SamuraiEnum.Samurai); // キャストすると値を取得できる Console.WriteLine((int)SamuraiEnum.Samurai); Console.ReadKey(); } } }
実行結果:
Samurai 0
このプログラムの結果から、キャストをしない場合には列挙子の名前が取得され、キャストをすると値が取得できることが確認できました。
int型をenumに変換する方法
ここでは、int型をenumに変換する方法を解説します。
int型をenumに変換するキャストの方法を次のプログラムで確認してみましょう。
using System; namespace Sample { // enumの定義 enum SamuraiEnum { Samurai = 0, Engineer = 1, Juku = 2 } class Sample { static void Main() { int num = 123; SamuraiEnum sEnum = (SamuraiEnum)Enum.ToObject(typeof(SamuraiEnum), num); Console.WriteLine((int)sEnum); Console.ReadKey(); } } }
実行結果:
123
このようにして、int型をenumに変換することができました。
enumを文字列に変換する方法
enumを文字列に変換するには、ToStringメソッドを使います。
次のプログラムで確認してみましょう。
using System; namespace Sample { // enumの定義 enum SamuraiEnum { Samurai = 0, Engineer = 1, Juku = 2 } class Sample { static void Main() { SamuraiEnum sEnum = SamuraiEnum.Samurai; Console.WriteLine(sEnum.ToString()); Console.ReadKey(); } } }
実行結果:
Samurai
このようにToStringメソッドを使って文字列に変換することができました。
enumを文字列に変換する方法は次の記事で詳しく解説しているので、ぜひ確認してください。
まとめ
いかがでしたか?
今回はenumとint型を相互に変換する方法を解説しました。
enumはswitch-case文と合わせて使うと便利なので、ぜひ活用してくださいね。
もし、enumとint型の変換を忘れてしまったらこの記事を確認してください!