将字符串解析为VB.NET中的Enum值


73

如何解析VB.NET中的字符串以枚举值?

示例我有这个枚举:

Public Enum Gender
    NotDefined
    Male
    Female
End Enum

如何将字符串“ Male”转换为Gender枚举Male值?

Answers:


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

如果我不知道类型并且想一般转换怎么办。在此示例中,您指定Male。我将枚举值保存在数据库中,并试图将其取回。在这种情况下,我可能不知道自转换为toString以来保存的实际值
Smith,

您应该使用值保存相关的Enum类型,例如“ Namespaces.EnumName”。在您可以使用反射按名称获取Type对象之后:Dim t = Type.GetType(“ Namespaces.EnumName”)并传递't'而不是'GetType(Gender)'。另外,您将必须强制转换结果值。为此,您在编写代码时必须知道特定的枚举类型。
Kamarey 2011年

2
在.NET 4.0中,语法很简单:Parse(enumType As System.Type, value As String) As Object
座右铭

2
他要求枚举的值,但是此代码段仅基于该字符串返回一个Enum对象。应该是:DirectCast([Enum].Parse(GetType(Gender), "Male"), Integer)
Max Hodges 2012年


4

如何将字符串“ Male”转换为Gender枚举的Male值?

接受的解决方案返回一个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"

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.