枚舉成員不能以數字開頭,所以這是無效的:
3DChart = 3
你可以在前面加上一個下劃線代替
_3DChart = 3
對於它的價值,您可以添加說明:
Public Enum EnumGraphType
<ComponentModel.Description("Table")>
Table = 0
<ComponentModel.Description("Chart")>
Chart = 1
<ComponentModel.Description("Gauge")>
Gauge = 2
<ComponentModel.Description("3DChart")>
_3DChart = 3
End Enum
這裏是一個枚舉的擴展,它返回它:
Public Module EnumExtensions
<Runtime.CompilerServices.Extension()>
Public Function GetDescription(ByVal EnumConstant As [Enum]) As String
Dim fi As Reflection.FieldInfo = EnumConstant.GetType().GetField(EnumConstant.ToString())
Dim attr() As ComponentModel.DescriptionAttribute =
DirectCast(_
fi.GetCustomAttributes(GetType(ComponentModel.DescriptionAttribute), False), _
ComponentModel.DescriptionAttribute() _
)
If attr.Length > 0 Then
Return attr(0).Description
Else
Return EnumConstant.ToString()
End If
End Function
End Module
現在你會得到這樣的描述:
Dim chartType = EnumGraphType._3DChart
Dim chartTypeDesc = chartType.GetDescription() ' 3DChart
這就是我的想法,但我希望的東西更聰明。謝謝Tim – Nianios
@Nianios:你可以有一個Enum成員前綴,比如'gt'(GraphType),然後把你的數字放在後面。 – Neolisk
@Nianios:我編輯了我的答案,以提供另一種使用描述的方式。 –