列挙型(Enum)

Enumについて

  • 型を省略した場合はInt32型となります。
  • 要素に型指定はできません。
  • 要素への値の代入は任意です。省略した場合は前の要素の値+1となります。
  • 値は連続している必要はありません。
  • 先頭要素の値の代入を省略した場合は0となります。

Enumで予約語を使いたいとき

Enumで予約語をキーに使う場合は、要素名をカギ括弧[]で囲みます。

例えば、errorはそのままだとエラーで要素名として使用することができませんが、[error]のようにカギ括弧でくくると使用できます。

Enum E_STATUS
    OK = 1
    [ERROR] = 9
End Enum

 

値の列挙

    For Each item In [Enum].GetValues(GetType(E_STATUS))
        comboBox1.Items.Add(item.ToString())
    Next

文字列による値の指定

    ' Enum.Parse()
    Dim w As DayOfWeek = DirectCast([Enum].Parse(GetType(DayOfWeek), "Sunday"), DayOfWeek)
    
    ' Enum.TryParse()
    [Enum].TryParse(Of DayOfWeek)("Sunday", w)

注意点

関数の返り値をEnumに定義していると、返り値がIntegerのOverrideやimplementはエラーとなります。

複数の値の保持

あまり知られていませんが、列挙型の変数には複数の値を保持することができます。

詳しくは、列挙型に複数の値を保持する方法 をご覧ください。

参考

列挙型 (Enum)