2015-08-12 4 views
1

Чтобы получить имя со значением перечисления, MSDN говорит использовать:Что такое [Enum] из GetName()?

[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

только что обнаружил, что квадратные скобки позволяют использовать ключевые слова как типы – Toby

+0

Синтаксис [] ограничивает использование ключевого слова как типа. –

+0

Итак, я мог бы использовать '[MyEnumTypeName] .GetType (GetType (MyEnumTypeName), MyEnumValue)'? – Toby

ответ

2

Как уже упоминалось, квадратные скобки вокруг имени переменной только позволяет использовать ключевое слово для имени переменной этого объекта. Они не нужны в вашем случае. Итак, продолжая ...

Документов для метода Enum.GetName: Enum.GetName Method

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

Вы не можете просто сделать:

MyEnumTypeName.GetName(MyEnumType, MyEnumValue) 

без объявления переменного типа Type назван MyEnumType. Для заполнения первого параметра вам понадобится объект типа Type. Если вы должны передать имя своего Enum, это не будет выполнено. Можно, однако, сделать следующее:

Dim MyEnumType As Type = GetType(MyEnumTypeName) 
MyEnumTypeName.GetName(MyEnumType, MyEnumValue) 

Если вы должны были объявить MyEnumType как переменный уровень класса, так что вам нужно всего лишь установить его один раз, то, что, по крайней мере, решить этот вопрос вы спрашиваете о в выше, чтобы остановить выполнение программы «больше работы, чем нужно».

+1

Объект типа 'Тип' - это бит, на который я был застрял, хотя тип и тип были одинаковыми. Та! – Toby

Смежные вопросы