vb.net - 枚举成员列表以数字开头

标签 vb.net enums

我遇到了我构建的枚举的问题。

  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/

相关文章:

mysql - '/' 应用程序 VB.NET 中的服务器错误

vb.net - 将 URL 拆分为不同的部分 VB.Net

c# - 在 VB NET 或 C# 中发布 PHP 数组

vb.net - 如何将 DataGridView 列从字符串转换为十进制?

.net - 通过 OAuth 2.0 自动使用 google-api-dotnet-client

C#:创建一个可以将枚举作为 List<string> 返回的通用方法

java - 带有枚举键的稀疏映射

c - Swift:如何对两个在 C 中是枚举常量的东西进行按位或运算?

c# - 设置 Flag 枚举除一个字段之外的所有值

c# - 从库类公开枚举