2012年6月15日金曜日

[.NET]列挙型(Enum)のオリジナル使い方

From Evernote:

[.NET]列挙型(Enum)のオリジナル使い方

フツウに宣言して自分変数として使うけど、
その他色々使うメモ。

'宣言部==============================
Private Enum ABCD As Integer
        A = 1
        B = 2
        C = 3
        D = 4
End Enum

'①通常の使い方
If tmp = ABCD.A.GetHashCode
     MessageBox.Show("あたり")
End If
'②定義されている数や中身を知りたい場合
Dim cnt As Integer = 0 
For Each EnumNumber As ABCD In System.Enum.GetValues(GetType (ABCD))
     cnt += 1
     MessageBox.Show(EnumNumber)
Next


'ここからは自分流==============
     'これはEnum宣言と同じく作っておく
     Private Function GetName( ByVal Type As Type, ByVal Code As Integer ) As String

        Dim tmp As String = Nothing

        If Type Is GetType(ABCD) Then
            Select Case Code
                Case ABCD.A.GetHashCode
                    tmp = "えー"
                Case ABCD.B.GetHashCode
                    tmp = "びー"
                Case ABCD.C.GetHashCode
                    tmp = "しー"
                Case ABCD.D.GetHashCode
                   tmp = "でー"
            End Select
        End If

        Return tmp

    End Function

# End Region

'たとえば列挙したデータでデータテーブルを作りたい場合==============
  Dim dt As New DataTable
  dt.Columns.Add( "id" , GetType( Integer))
  dt.Columns.Add( "name" , GetType( String))
  For Each EnumNumber As ABCDIn System.Enum.GetValues(GetType (ABCD))
        Dim dr As DataRow = dt.NewRow
        dr.Item( "id" ) = EnumNumber
        dr.Item( "name" ) = GetName( GetType(ABCD), EnumNumber)
        dt.Rows.Add(dr)
  Next

0 件のコメント:

コメントを投稿