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
相关推荐
半个烧饼不加肉11 小时前
JS 底层探究-- 事件循环
开发语言·前端·javascript
asdfg125896311 小时前
C 语言中产生伪随机数的标准做法
c语言·开发语言
KobeSacre11 小时前
JUC 概述
java·开发语言
周杰伦fans12 小时前
AutoCAD C# 二次开发:如何精确监听工作空间切换事件
前端·c#
用户37215742613512 小时前
如何使用 C# 自动调整 Excel 行高和列宽
c#
Jun62612 小时前
QT(2)-通过管道关联CMD
开发语言·qt·命令模式
AI导出鸭PC端12 小时前
智谱清言怎么生成word文档?AI导出鸭终结乱码烦恼
人工智能·ai·c#·word·豆包·ai导出鸭
Deep-w12 小时前
【MATLAB】基于离散 LQR 的车辆横向轨迹跟踪控制方法研究
开发语言·算法·matlab
于先生吖13 小时前
前后端分离二手商城开发,质检登记、回收回款整套业务源码部署教程
java·开发语言·uni-app
codeejun13 小时前
每日一Go-76(架构篇)|多集群部署 / 容灾 / Failover / Backup / 热迁移
开发语言·架构·golang