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

如何在C#的常量字符串列表中验证字符串是否存在

C# 判断字符串是否存在于常量字符串列表的最简方法

需求:判断指定字符串Destination.Name是否存在于{"MA", "MB", "MC", "MD", "ME", "MF", "MG"}这组常量字符串中,以下是两种尝试过但无法正常运行的写法:

// 第一种尝试
if (Destination.Name in {"MA", "MB", "MC", "MD", "ME", "MF", "MG"})

// 第二种尝试
if IndexOf(new string[] { "MA", "MB", "MC", "MD", "ME", "MF", "MG" }, Destination.Name)

正确的最简实现方式

1. 用LINQ的Contains方法(需引用System.Linq)

这是最直观的写法,通过LINQ扩展方法直接判断数组是否包含目标字符串:

using System.Linq;

// ...

if (new[] { "MA", "MB", "MC", "MD", "ME", "MF", "MG" }.Contains(Destination.Name))
{
    // 字符串存在时执行的逻辑
}

2. 用Array.IndexOf(无需LINQ)

通过数组静态方法获取目标字符串的索引,判断索引是否不等于-1(-1表示未找到):

if (Array.IndexOf(new string[] { "MA", "MB", "MC", "MD", "ME", "MF", "MG" }, Destination.Name) != -1)
{
    // 字符串存在时执行的逻辑
}

3. C# 9.0+ 模式匹配写法

如果使用较新版本的C#,可以用更简洁的语法实现:

// C# 9.0+ 支持的或模式
if (Destination.Name is "MA" or "MB" or "MC" or "MD" or "ME" or "MF" or "MG")
{
    // 逻辑代码
}

// C# 10.0+ 支持的列表模式,和你最初的思路最接近
if (Destination.Name in ["MA", "MB", "MC", "MD", "ME", "MF", "MG"])
{
    // 逻辑代码
}

优化建议(多次判断场景)

如果这个字符串列表会被多次使用,建议提前定义为常量集合(比如HashSet<string>),避免每次创建新数组,提升性能:

// 定义为类级别的常量集合
private static readonly HashSet<string> TargetDestinationNames = new HashSet<string>
{
    "MA", "MB", "MC", "MD", "ME", "MF", "MG"
};

// 后续判断时直接调用
if (TargetDestinationNames.Contains(Destination.Name))
{
    // 逻辑代码
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 22:52:44