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

C#中高效比较多变量与同一值并复用后续逻辑的方法

优化C#中多变量同值比较及复用逻辑的方案

当然有办法解决这个问题!你的核心需求是避免重复编写if判断和相同的方法调用代码,C#提供了多种简洁的方式来实现这个目标,下面我给你几个实用的优化方案:

方案1:用元组集合批量处理,优先处理第一个错误

如果你只需要处理第一个出现的非空错误(和你原来的if/else逻辑一致),可以把每个检查的结果、错误信息打包成元组,放到集合里统一处理:

// 先将需要检查的结果与对应的错误信息配对
var errorEntries = new List<(PatientList3 Results, string Error)>
{
    (DOBResults, DOBResultsError),
    (NameResults, NameResultsError)
};

// 筛选出第一个非空的错误项
var firstError = errorEntries.FirstOrDefault(entry => !string.IsNullOrEmpty(entry.Error));

// 存在错误时执行统一逻辑
if (!string.IsNullOrEmpty(firstError.Error))
{
    PatientRecordUpdate(firstError.Results, APIParameters.PatientID, firstError.Error);
}

这个方案的好处是:后续新增更多检查项时,只需要往errorEntries里添加新的元组即可,不需要修改判断逻辑,扩展性很强。

方案2:封装判断逻辑为辅助方法,简化调用

如果希望保持每个检查的独立性,但又不想重复写if判断,可以把错误判断和方法调用封装成一个小方法:

// 封装重复的判断与调用逻辑
private void ProcessPatientError(PatientList3 results, int patientId, string errorMessage)
{
    if (!string.IsNullOrEmpty(errorMessage))
    {
        PatientRecordUpdate(results, patientId, errorMessage);
    }
}

// 调用时只需传入对应参数,简洁清晰
ProcessPatientError(DOBResults, APIParameters.PatientID, DOBResultsError);
ProcessPatientError(NameResults, APIParameters.PatientID, NameResultsError);

这种方式把重复的逻辑抽离出来,以后如果需要修改错误判断规则(比如改成判断string.IsNullOrWhiteSpace),只需要修改辅助方法即可,不用逐个修改调用处。

方案3:批量生成并处理所有错误(如果需要处理全部错误)

如果你需要处理所有非空的错误(而不是只处理第一个),可以直接在生成错误信息时就进行批量处理:

// 批量生成错误信息并过滤出非空项
var allErrors = new[]
{
    (Results: DOBResults, Error: VerifySingleRecordReturned(DOBResults, APIParameters, 1)),
    (Results: NameResults, Error: VerifySingleRecordReturned(NameResults, APIParameters, 2))
}.Where(item => !string.IsNullOrEmpty(item.Error));

// 遍历处理每个错误
foreach (var error in allErrors)
{
    PatientRecordUpdate(error.Results, APIParameters.PatientID, error.Error);
}

这个方案省去了单独存储每个错误变量的步骤,直接链式完成错误生成、过滤和处理,代码更紧凑。

关于switch的补充说明

你提到用switch无法解决这个问题是对的——switch更适合处理单一变量的多分支判断,没法直接关联多个变量和对应的逻辑复用。而上面的集合/封装方法的思路,更贴合你这种“多变量同规则判断+复用处理逻辑”的场景。

内容的提问来源于stack exchange,提问作者W.Harr

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:30:23