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
相关推荐
阿里嘎多学长40 分钟前
2026-04-05 GitHub 热点项目精选
开发语言·程序员·github·代码托管
OOJO41 分钟前
c++---vector介绍
c语言·开发语言·数据结构·c++·算法·vim·visual studio
Makoto_Kimur1 小时前
Java 打印模板大全
java·开发语言·排序算法
程序员榴莲1 小时前
Java(十)super关键字
java·开发语言
胖咕噜的稞达鸭1 小时前
C++技术岗面试经验总结
开发语言·网络·c++·网络协议·tcp/ip·面试
java1234_小锋2 小时前
Java高频面试题:如何编写一个MyBatis插件?
java·开发语言·mybatis
众创岛2 小时前
iframe的属性获取
开发语言·javascript·ecmascript
一个处女座的程序猿O(∩_∩)O2 小时前
Python基础知识大全:从零开始掌握Python核心语法
开发语言·python
小陈工2 小时前
Python Web开发入门(十一):RESTful API设计原则与最佳实践——让你的API既优雅又好用
开发语言·前端·人工智能·后端·python·安全·restful
计算机安禾2 小时前
【数据结构与算法】第28篇:平衡二叉树(AVL树)
开发语言·数据结构·数据库·线性代数·算法·矩阵·visual studio