如何对枚举值和应与枚举名称匹配的字符串进行简单比较?
如何将字符串解析为适当的枚举值。
例如,
Enum A
B=0
C=1
D=2
End Enum
如何检查String = A.C以及如何将字符串转换为相应的A值而不将其与字符串表示进行比较?
答案 0 :(得分:17)
有几种不同的方法相关:
Enum.GetName(typeof(A), A.C) == "C"
A.C.ToString() == "C"
((A)Enum.Parse(typeof(A), "C")) == A.C
前两个将A.C
的值转换为字符串表示形式("C"
),然后将其与字符串进行比较。最后一个将字符串"C"
转换为类型A
,然后将其作为实际类型A
进行比较。
枚举为字符串:enumValue.ToString()
或Enum.GetName(typeof(A), A.C)
枚举字符串:(A)Enum.Parse(typeof(A), "C")
请注意,如果枚举标有FlagsAttribute
,则其中任何一个都无法正常工作。
答案 1 :(得分:7)
Enum.Parse方法:
转换字符串表示形式 一个或的名称或数值 更多枚举的常量 等效的枚举对象。一个 参数指定是否 操作区分大小写。
这是来自MSDN的VB.NET示例代码:
Module Example
Public Sub Main()
Dim colorStrings() As String = {"0", "2", "8", "blue", "Blue", "Yellow", "Red, Green"}
For Each colorString As String In colorStrings
Try
Dim colorValue As Colors = CType([Enum].Parse(GetType(Colors), colorString, True), Colors)
If [Enum].IsDefined(GetType(Colors), colorValue) Or colorValue.ToString().Contains(",") Then
Console.WriteLine("Converted '{0}' to {1}.", colorString, colorValue.ToString())
Else
Console.WriteLine("{0} is not an underlying value of the Colors enumeration.", colorString)
End If
Catch e As ArgumentException
Console.WriteLine("{0} is not a member of the Colors enumeration.", colorString)
End Try
Next
End Sub
End Module
答案 2 :(得分:5)
Enum.GetName(typeof(A),enumValue)==stringValue
答案 3 :(得分:2)
您还可以使用name()函数来检查
A.C.name() == "C"