ここでは、以下に示すような列挙体操作のサンプルコードを掲載しています。
- 列挙体の一覧を foreach を使って取得する方法
- 列挙体の定義名からその値を取得する方法
- 列挙体に定義されている名前または値であるかを確認する方法
スポンサーリンク
各サンプルコードでは、以下の列挙体を使用しています。
VB.NET
'使用するEnum定義 Public Enum Hokuriku As Integer Toyama = 1 Ishikawa = 2 Fukui = 4 End Enum
C#
// 使用するEnum定義 public enum Hokuriku { Toyama = 1, Ishikawa = 2, Fukui = 4 };
列挙体の一覧を foreach を使って取得する方法
列挙体の定義名、値およびその両方を一覧ですべて取得するサンプルコードです。
VB.NET
' 値の一覧のみを取得 For Each val As Integer In [Enum].GetValues(GetType(Hokuriku)) Console.WriteLine(val.ToString()) Next '出力 ' 1 ' 2 ' 4 ' 名前の一覧のみを取得 For Each name As String In [Enum].GetNames(GetType(Hokuriku)) Console.WriteLine(name) Next '出力 ' Toyama ' Ishikawa ' Fukui ' 名前と値の一覧を取得 For Each val As Hokuriku In [Enum].GetValues(GetType(Hokuriku)) Console.WriteLine(val.ToString() + " = " + Convert.ToInt32(val).ToString()) Next '出力 ' Toyama = 1 ' Ishikawa = 2 ' Fukui = 4
C#
// 値の一覧のみを取得 foreach (int val in Enum.GetValues(typeof(Hokuriku))) { Console.WriteLine(val.ToString()); } //出力 // 1 // 2 // 4 // 名前の一覧のみを取得 foreach (string name in Enum.GetNames(typeof(Hokuriku))) { Console.WriteLine(name); } //出力 // Toyama // Ishikawa // Fukui // 名前と値の一覧を取得 foreach (Hokuriku val in Enum.GetValues(typeof(Hokuriku))) { Console.WriteLine(val.ToString() + " = " + Convert.ToInt32(val).ToString()); } //出力 // Toyama = 1 // Ishikawa = 2 // Fukui = 4
列挙体の定義名からその値を取得する方法
列挙体の名前(文字列)からその値を取得するサンプルコードです。なお、定義名をカンマで区切りで複数指定する ことができる点がポイントです。なお、その結果はそれぞれの値の論理和となります。
VB.NET
' 名前からEnumオブジェクトに変換する Dim toyama As Hokuriku = [Enum].Parse(GetType(Hokuriku), "Toyama") Console.WriteLine(toyama.ToString() + " = " + Convert.ToInt32(toyama).ToString()) '出力 ' Toyama=1 ' 複数の定義名を指定した場合は、その値の論理和が返される Dim bitor As Hokuriku = [Enum].Parse(GetType(Hokuriku), "Ishikawa,Fukui") Console.WriteLine(bitor.ToString() + " = " + Convert.ToInt64(bitor).ToString()) '出力 ' 6=6
C#
// 名前からEnumオブジェクトに変換する Hokuriku toyama = (Hokuriku)Enum.Parse(typeof(Hokuriku), "Toyama"); Console.WriteLine(toyama.ToString() + " = " + Convert.ToInt32(toyama).ToString()); //出力 // Toyama=1 // 複数の定義名を指定した場合は、その値の論理和が返される Hokuriku bitor = (Hokuriku)Enum.Parse(typeof(Hokuriku), "Ishikawa,Fukui"); Console.WriteLine(bitor.ToString() + " = " + Convert.ToInt64(bitor).ToString()); //出力 // 6=6
列挙体に定義されている名前または値であるかを確認する方法
Enum.IsDefined メソッドを使用して、列挙体に定義されている値、または名前であるかを確認することができます。
VB.NET
' Enum定義されている名前または値であるか確認する Dim exists As Boolean exists = [Enum].IsDefined(GetType(Hokuriku), 3) '値で指定する Console.WriteLine(exists.ToString()) '出力 ' False exists = [Enum].IsDefined(GetType(Hokuriku), "Fukui") '名前で指定する Console.WriteLine(exists.ToString()) '出力 ' True
C#
// Enum定義されている名前または値であるか確認する Boolean exists; exists = Enum.IsDefined(typeof(Hokuriku), 3); // 値で指定する Console.WriteLine(exists.ToString()); //出力 // False exists = Enum.IsDefined(typeof(Hokuriku), "Fukui"); // 名前で指定する Console.WriteLine(exists.ToString()); //出力 // True