ここでは、以下に示すような列挙体操作のサンプルコードを掲載しています。
- 列挙体の一覧を 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