如何正确检查枚举值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
相关产品推荐
相关产品推荐

