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

C#中if语句比较多个字符串的更优实现方法

C# 代码优化方案

多字符串等值判断优化

原有连续||判断功能无逻辑错误,但可维护性、扩展性不足,推荐使用HashSet<string>实现包含判断:

// 定义为类级静态只读字段,避免每次执行逻辑重复初始化
private static readonly HashSet<string> MatchTargets = new HashSet<string>
{
    "abc", "def", "ghi"
};

// 业务判断逻辑
if (MatchTargets.Contains(d))
{
    // 自定义业务代码
}

方案优势:

  • 增删匹配值仅需修改集合初始化内容,无需重复编写d == xxx的判断语句,可读性更高
  • HashSet的包含判断时间复杂度为O(1),匹配项数量较多时性能优于连续或判断
  • 需调整匹配规则时(如忽略大小写),直接在集合初始化时传入对应比较器即可,例如new HashSet<string>(StringComparer.OrdinalIgnoreCase)

注意:C# 字符串的==运算符已做重载,默认行为和string.Equals()完全一致,常规场景下无需特意替换二者。

流读取与字符串分割优化

原有读取、分割代码缺少空值校验,存在空引用异常风险,优化后写法:

var line = sr.ReadLine();
// 空值校验,规避流读取到末尾返回null时调用Split抛出异常
if (string.IsNullOrWhiteSpace(line))
{
    // 按需处理空行/流结束逻辑
    return;
}
// 传入分割选项,自动移除空条目、裁剪字段前后空白,减少后续冗余处理
string[] values = line.Split(';', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries);

报错排查相关说明

你之前尝试的「条件后追加&& false」「替换==为Equals」两种排查手段未生效,符合预期——这两种方式仅能验证当前判断分支的执行路径问题,既然已经证实报错和这段字符串判断逻辑无关,自然无法通过这两种方式定位根因。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 17:45:38