什么是GetName()的[Enum]?

时间:2015-08-12 14:48:39

标签: vb.net types enums

要获取枚举值的名称,MSDN表示要使用:

[Enum].GetName(GetType(MyEnumTypeName), MyEnumValue)
'for e.g. if I have an enum for colours of the rainbow, then the following
[Enum].GetName(GetType(RainbowColours), 0)
'may return "Red"

首先,这里的[Enum]是什么?这是我第一次遇到这个VB中使用的方括号。我可以将其更改为:

[MyEnumTypeName].GetName(GetType(MyEnumTypeName), MyEnumValue)

其次,我已将枚举的基础类型指定为Byte,但VS不允许我为此声明的目的直接指定此

[Enum].GetName(Byte, MyEnumValue)

我是否可以使用GetName以便我不需要使用GetType

这样的组合可能允许我使用:

[MyEnumTypeName].GetName(MyEnumType, MyEnumValue)

1 个答案:

答案 0 :(得分:2)

如上所述,变量名称周围的方括号只允许您为该对象的变量名使用关键字。在您的情况下,它们不是必需的。所以,继续......

Enum.GetName方法的文档: Enum.GetName Method

Public Shared Function GetName ( _
    enumType As Type, _
        value As Object _
) As String

你不能这样做:

MyEnumTypeName.GetName(MyEnumType, MyEnumValue)

不声明名为Type的{​​{1}}类型的变量。您需要类型为MyEnumType的对象来填充第一个参数。如果你要传递你的枚举的名字,它不会完成同样的事情。但是,您可以执行以下操作:

Type

如果您要将Dim MyEnumType As Type = GetType(MyEnumTypeName) MyEnumTypeName.GetName(MyEnumType, MyEnumValue) 声明为类级变量,这样您只需要设置一次,那么这至少可以解决您在上面的注释中提出的问题,以阻止程序执行& #34;比他们需要更多的工作"。