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

如何用设计模式规避嵌套if语句?附C#代码示例求解决方案

优化嵌套if的方案:无需复杂设计模式,简洁写法搞定

当然有办法优化这段嵌套if的代码!其实你的场景不需要引入复杂的设计模式,用一些更直观的写法就能彻底消除嵌套,而且逻辑和原代码完全一致。

方案一:直接条件赋值(最直观)

这种写法把每个参数的判断拆分开,去掉嵌套,一眼就能看懂每个参数的取值逻辑:

private Message GetMessageFrom(string[] args)
{
    string id = args.Length > 0 ? args[0] : null;
    string body = args.Length > 1 ? args[1] : null;
    string label = args.Length > 2 ? args[2] : null;
    string path = args.Length > 3 ? args[3] : null;
    
    return new Message(id, body, label, path);
}

方案二:用LINQ简化处理(更紧凑)

如果想让代码更简洁,可以借助LINQ的Take和PadRight方法,把参数数组统一处理成固定长度的序列,不足的位置用null填充:

using System.Linq;

private Message GetMessageFrom(string[] args)
{
    var parameters = args.Take(4).PadRight(4, null).ToArray();
    return new Message(parameters[0], parameters[1], parameters[2], parameters[3]);
}

关于设计模式的补充

如果一定要关联设计模式的话,当前场景其实是简单参数解析,没必要用策略、工厂这类复杂模式。但如果未来你的参数规则变得复杂(比如参数顺序可变、需要验证、有默认值逻辑等),可以考虑:

  • 建造者模式:分步构建Message对象,把参数赋值的逻辑封装到建造者中
  • 选项模式(.NET生态):用强类型的选项类来管理参数,配合配置绑定处理可选参数

不过就当前的简单需求来说,上面两种简洁写法已经足够好用了。

内容的提问来源于stack exchange,提问作者c-sharp

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:12:50