まずはVB.NETでのenum(列挙子)の基本的な宣言方法。特に何もしなければ内部的にはInt32型となり、宣言した順に0から値が割り振られます。
Enum DayOfWeek Sunday Monday Tuesday Wednesday Thursday Friday Saturday End Enum
内部の型や値を指定することも可能。下の例ではUInteger型となり、宣言した順に1から値が割り振られます。
Enum DayOfWeek As UInteger Sunday = 1 Monday Tuesday Wednesday Thursday Friday Saturday End Enum
ドロップダウンリストなどの項目にする場合、Enum.GetValuesメソッドで全ての値を列挙させます。
For Each item In [Enum].GetValues(GetType(DayOfWeek)) comboBox1.Items.Add(item.ToString()) Next
文字列からenum値に変換する場合、Enum.Parseメソッド または Enum.TryParseメソッド を使用します。
' Enum.Parse() Dim w As DayOfWeek = DirectCast([Enum].Parse(GetType(DayOfWeek), "Sunday"), DayOfWeek) ' Enum.TryParse() [Enum].TryParse(Of DayOfWeek)("Sunday", w)
複数の値を取る場合、<Flags>属性を付けてビットフィールドとして扱います。
<Flags()> Enum DayOfWeek As Byte Sunday = 1 Monday = 2 Tuesday = 4 Wednesday = 8 Thursday = 16 Friday = 32 Saturday = 64 End Enum
or演算子で複数指定できます。また、ToString()すると下のようにカンマ区切り出力されます。
Dim weekend As DayOfWeek = DayOfWeek.Sunday Or DayOfWeek.Saturday Console.WriteLine(weekend.ToString()) ' output: Sunday, Saturday
HasFlagメソッドでフラグが含まれるかを判定します。
Public Function IsWeekend(w As DayOfWeek) As Boolean Return w.HasFlag(DayOfWeek.Sunday Or DayOfWeek.Saturday) End Function