You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 09:33:13