我遇到了我构建的枚举的问题。
Public Enum enumGraphType
Table = 0
Chart = 1
Gauge = 2
3DChart = 3
End Enum
我收到 3DChart 错误:语句不能出现在枚举体内。假设枚举结束。
我知道我可以使用 D3Chart 这个名称,但这不是我想要的。
我还知道我可以添加一个属性(如描述)并将我的描述设置为 3DChart,但这不是我想要的。
我也尝试过[3DChart],但它不起作用。
有什么办法可以解决这个问题并保留名称吗?
感谢您的宝贵时间
最佳答案
枚举成员不能以数字开头,因此这是无效的:
3DChart = 3
您可以在前面加上下划线
_3DChart = 3
对于它的值(value),您可以添加描述:
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
关于vb.net - 枚举成员列表以数字开头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21187821/