VB.NET中如何判断字符串是否属于指定枚举类型?
枚举有效值判断方案
针对你提出的场景,既可以用Contains()方法实现,也有更简洁的标准枚举判断方式,具体如下:
方法一:使用Enum.IsDefined(推荐)
这是.NET判断枚举有效值的标准方法,只需先将VB字符串变量转换为枚举对应的char类型,再传入方法验证:
' 先确保字符串长度为1,避免转换异常 If myCarValue.Length = 1 Then Dim targetChar As Char = Convert.ToChar(myCarValue) Dim isValid As Boolean = [Enum].IsDefined(GetType(Cars), targetChar) ' isValid即为判断结果:True表示是有效值,False则不是 End If
原理:Enum.IsDefined会直接校验指定值是否在枚举的已定义成员中,无需手动遍历,效率更高。
方法二:使用Contains()方法
先提取枚举所有成员对应的char值形成集合,再用Contains()判断目标字符是否在集合内:
If myCarValue.Length = 1 Then Dim targetChar As Char = Convert.ToChar(myCarValue) ' 获取枚举所有值并转换为char集合 Dim validCarChars As IEnumerable(Of Char) = [Enum].GetValues(GetType(Cars)) _ .Cast(Of Cars)() _ .Select(Function(car) Convert.ToChar(car)) Dim isValid As Boolean = validCarChars.Contains(targetChar) ' isValid即为判断结果 End If
原理:通过Enum.GetValues获取枚举的所有成员,转换为对应的char类型后构建集合,再利用LINQ的Contains()方法完成存在性校验。
注意事项
无论哪种方法,都需要先确保myCarValue是长度为1的字符串,否则转换char时会抛出异常,建议先做长度校验。
内容的提问来源于stack exchange,提问作者Rich
相关产品推荐
相关产品推荐

