Enum(列挙子)の基本的な使い方を説明します。
列挙体のメンバの値(整数値のみ)や名前を列挙するクラスです。
列挙体を定義するにはEnum ~ End Enum
何も宣言しなければデフォルトでInt32型となり、宣言した順に0から値が振られます。
Enum DayWeek Sunday Monday Tuesday Wednesday Thursday Friday Saturday End Enum
内部の型や値を指定することも可能です。
下記ではUInteger型となり、宣言した順に1から値が振られます。
Enum DayWeek As UShort Sunday = 1 Monday Tuesday Wednesday Thursday Friday Saturday End Enum
<Flags>属性を付けてビットフィールドとして扱う事もできます。
<Flags()> Enum DayWeek As UShort Sunday = 1 Monday = 2 Tuesday = 4 Wednesday = 8 Thursday = 16 Friday = 32 Saturday = 64 End Enum
列挙体のメンバの値を列挙する
Dim val As DayWeek For Each val In [Enum].GetValues(GetType(DayWeek)) 'メンバの名称と値を取得する Dim sName As String = [Enum].GetName(GetType(DayWeek), val) MessageBox.Show(sName & " " & CInt(val).ToString()) Next '名前のみ For Each DayName As String In [Enum].GetNames(GetType(DayWeek)) MessageBox.Show(DayName) Next '値のみ For Each v As UShort In [Enum].GetValues(GetType(DayWeek)) MessageBox.Show(v.ToString()) Next
文字列からEnum値に変換する
Enum.Parseメソッド または Enum.TryParseメソッド を使用します。
' Enum.Parse() Dim w As DayWeek = DirectCast([Enum].Parse(GetType(DayWeek), "Friday"), DayWeek) Dim eName As String = [Enum].GetName(GetType(DayWeek), w) MessageBox.Show(eName & " " & CInt(w).ToString()) 'Enum.TryParse() [Enum].TryParse(Of DayWeek)("Wednesday", w) Dim sName2 As String = [Enum].GetName(GetType(DayWeek), w) MessageBox.Show(sName2 & " " & CInt(w).ToString())