2009-05-12 2 views
51

Как я могу проанализировать строку в VB.NET для значения перечисления?Вывести строку в значение Enum в VB.NET

Пример У меня есть это перечисление:

Public Enum Gender 
    NotDefined 
    Male 
    Female 
End Enum 

как я могу преобразовать строку "Мужской" в Male стоимости Gender ENUM в?

ответ

104
Dim val = DirectCast([Enum].Parse(GetType(Gender), "Male"), Gender) 
+0

Что делать, если я не знаю тип и хотел бы преобразовать в целом. в этом примере вы указали «Мужской». Я сохранил значение перечисления в базе данных и попытаюсь вернуть его. в этом случае я мог бы не знать фактическое значение, которое я сохранил с момента преобразования toString – Smith

+0

. Вы должны сохранить связанный тип Enum со значением, например «Namespaces.EnumName». После того, как вы можете использовать отражение, чтобы получить объект Type по имени: Dim t = Type.GetType ("Namespaces.EnumName") и передать 't' вместо 'GetType (Пол)'. Также вам нужно будет указать значение результата. Для этого вы должны знать определенный тип перечисления при написании кода. – Kamarey

+2

В .NET 4.0 синтаксис просто: 'Parse (enumType As System.Type, value As String) As Object' – motto

18

См. Enum.TryParse.

+0

Существует единственный метод Анализировать(). Не знаете, где метод Enum.TryParse()? –

+10

@David: Enum.TryParse() доступен в .NET 4 –

+1

правильная ссылка, не может редактировать ответ, так как он меньше 30 символов: http://msdn.microsoft.com/en-us/library/dd783499 .aspx –

2

как я могу преобразовать строку «Мужской» в мужской стоимости Гендерные ENUM в?

Принятое решение возвращает объект Enum. Чтобы вернуть значение, которое вы хотите, чтобы это решение:

dim MyGender as string = "Male" 
dim Value as integer 
Value = DirectCast([Enum].Parse(GetType(Gender), MyGender), Integer) 

Может также сделать это таким образом:

value = cInt([enum].Parse(GetType(Gender), MyGender)) 
0

Если вы хотите, чтобы синтаксический анализ, чтобы быть чувствительны к регистру, вы можете использовать следующее:

[Enum].Parse(Gender, DirectCast(MyGender, String), True) 

Это будет обрабатывать dim MyGender as string = "Male" или dim MyGender as string = "male"

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