C# if / else 的正确写法与反例

一、最基础的写法

cs 复制代码
if (score >= 60)
{
    Console.WriteLine("及格");
}
else
{
    Console.WriteLine("不及格");
}

不建议省略大括号,哪怕只有一行代码

cs 复制代码
if (isValid)
    DoA();
    DoB();

以为是这样:

cs 复制代码
if (isValid)
{
    DoA();
    DoB();
}

实际上:

cs 复制代码
if (isValid)
{
    DoA();
}
DoB(); // 永远执行

二、if 嵌套问题

多个 if 嵌套,屎山

cs 复制代码
if (user != null)
{
    if (user.IsActive)
    {
        if (user.Role == "Admin")
        {
            DoSomething();
        }
    }
}

改写:

cs 复制代码
if (user == null) return;
if (!user.IsActive) return;
if (user.Role != "Admin") return;

DoSomething();

三、else if 顺序问题

错误案例:

cs 复制代码
if (score >= 60)
{
    Console.WriteLine("及格");
}
else if (score >= 90)
{
    Console.WriteLine("优秀");
}

正确写法:

cs 复制代码
if (score >= 90)
{
    Console.WriteLine("优秀");
}
else if (score >= 60)
{
    Console.WriteLine("及格");
}

四、if 条件不宜过长

cs 复制代码
if (user != null && user.IsActive && user.Role == "Admin" && user.Age > 18)

可以拆分:

cs 复制代码
bool isValidAdmin =
    user != null &&
    user.IsActive &&
    user.Role == "Admin" &&
    user.Age > 18;

if (isValidAdmin)
{
    DoSomething();
}

五、if + return 的正确使用方式

先排除失败条件

cs 复制代码
if (!File.Exists(path))
{
    Log("文件不存在");
    return;
}

ProcessFile(path);

六、总结

  • 加大括号
  • 避免深层嵌套
  • 复杂条件拆变量
  • 失败条件优先 return
相关推荐
贾宝玉的玉宝贾9 分钟前
FreeSWITCH 简单图形化界面 70 - 监听/密语的lua脚本
开发语言·junit·lua·voip·freeswitch·sip·ippbx
Wang's Blog10 分钟前
Java 项目部署之 Docker工具快速入门: 镜像命令从 pull 到 load 的完整实操
java·开发语言·docker
北京盛世宏博15 分钟前
异地机房采集踩坑笔记:以太网温湿度记录仪跨网段通信调试实战
开发语言·笔记·单片机·php·传感器·温湿度
Wang's Blog18 分钟前
Java 项目部署之 Docker工具快速入门: Docker 数据卷命令与挂载实操
java·开发语言·docker
霸道流氓气质28 分钟前
AI 应用异常检测与根因分析:语义漂移检测、因果图推理与LLM-as-Judge的 Java 生产级实现
java·开发语言·人工智能
棉猴34 分钟前
玩游戏学Python2-IDLE与pgzero入门
开发语言·python·游戏·玩游戏·pgzero·pgzrun
xuxigifxfh37 分钟前
牛客:BISHI2 【模板】栈的操作
java·开发语言·windows·算法
(Charon)1 小时前
【C++面试】线程并发与异步:区别、实现原理及使用场景
开发语言·c++
AIFQuant1 小时前
Python A股实时行情API接入:沪深股票数据与WebSocket推送实战
开发语言·python·websocket·金融·a股行情
字节暗面1 小时前
客户端上报不可信:游戏服务端数据校验与对局重演设计
c#·游戏开发·服务端校验·反作弊