【问题标题】:Enum.GetName vs Enum.ToStringEnum.GetName 与 Enum.ToString
【发布时间】:2016-10-20 03:18:23
【问题描述】:

对于这个枚举,

Enum MyEnum
    Value
End Enum

有两种方法可以获取MyEnum.Value的名称表示Value

[Enum].GetName(GetType(MyEnum), MyEnum.Value) ' aka Enum.GetName

Dim a As MyEnum = MyEnum.Value
a.ToString ' aka Enum.ToString

它们的优缺点是什么?毕竟哪个更好?

PS:one answer 用于 java,但这是 .NET,可能有不同的功能。

【问题讨论】:

  • ToString 可以处理带有多个标志的Flag 属性的枚举。

标签: .net vb.net enums tostring


【解决方案1】:

以下是使用此枚举可以完成的一些示例,请注意 flags 属性的用法。

    <Flags>
   Public Enum bit As Short
        none = 0
        s0 = 1 << 0
        s1 = 1 << 1
        s2 = 1 << 2
        s3 = 1 << 3
        s4 = 1 << 4
        s5 = 1 << 5
        s6 = 1 << 6
        s7 = 1 << 7
        s8 = 1 << 8
        s9 = 1 << 9
        s10 = 1 << 10
        s11 = 1 << 11
        s12 = 1 << 12
        s13 = 1 << 13
        s14 = 1 << 14
        all = -1
    End Enum

还有这段代码

    Dim s As String = bit.s13.ToString
    s = (bit.s10 Or bit.s11).ToString

    Dim foo() As String
    foo = [Enum].GetNames(GetType(bit))

    For Each s As String In foo
        Debug.WriteLine(s)
    Next

    Dim test As bit = bit.s1 Or bit.s3 Or bit.s5
    Debug.WriteLine(test.ToString)
    Debug.WriteLine(CShort(test).ToString)

    test = test Or CType([Enum].Parse(GetType(bit), "s14"), bit)
    Debug.WriteLine(test.ToString)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多