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

如何正确检查枚举值Grapes是否存在于Type数组varieties中?

正确判断枚举值是否存在于数组中的方法

问题核心是你用枚举实例直接和字符串调用Equals时,由于类型不匹配(枚举值是值类型,字符串是引用类型),所以永远返回false;而ToString()会把枚举值转换为对应的成员名称字符串,因此对比有效。

以下是几种无需硬编码索引的正确写法:

  • 方法一:遍历数组时将枚举值转为字符串对比
    和你手动索引的逻辑一致,但会遍历所有元素:

    varieties.Any(e => e.ToString() == "Grapes")
    
  • 方法二:将字符串转为枚举值后对比(更高效)
    避免多次调用ToString(),先把字符串转成对应的枚举实例,再和数组元素对比,还能处理拼写错误的情况:

    // 替换Fruit为你实际的枚举类型名称
    if (Enum.TryParse(typeof(Fruit), "Grapes", out var targetFruit))
    {
        bool exists = varieties.Any(e => e.Equals(targetFruit));
        // 执行后续逻辑
    }
    
  • 方法三:结合Enum.GetName匹配枚举成员名称
    严格匹配枚举成员的定义名称,适合需要精确校验的场景:

    varieties.Any(e => Enum.GetName(typeof(Fruit), e) == "Grapes")
    

内容的提问来源于stack exchange,提问作者Sarahrb

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 07:32:10