C# 基础语法:if-else 条件判断完整教程–009

一、前言

条件判断是程序分支逻辑的核心,if-else 用于根据布尔条件(true/false) 执行不同代码块。C# 中所有判断条件必须返回 bool 类型,不支持数字 0/非0隐式转换,这点和 C/C++ 有明显区别。

二、基础语法分类

1. 单 if 语句(只满足条件才执行)

语法格式
if (条件表达式)
{
    // 条件为 true 执行的代码
}
  • 条件必须包裹 ()
  • 代码只有一行时可省略 {},但工程开发建议永远加花括号避免歧义。
示例代码
int age = 20;
if (age >= 18)
{
    Console.WriteLine("成年人,可以上网");
}

2. if-else 二分支(二选一)

满足 if 走if代码块,不满足自动走 else

语法
if (条件)
{
    // true执行
}
else
{
    // false执行
}
示例
int score = 59;
if (score >= 60)
{
    Console.WriteLine("考试及格");
}
else
{
    Console.WriteLine("考试不及格,需要补考");
}

3. if-else if 多分支(多条件依次判断)

多个互斥条件,从上到下依次匹配,匹配成功后直接跳出整个分支结构。

语法
if (条件1)
{
    // 条件1成立
}
else if (条件2)
{
    // 条件1不成立,条件2成立
}
else if (条件3)
{
    // 前两个都不成立,条件3成立
}
else
{
    // 所有条件都不成立
}
成绩分级实战案例
int score = 85;
if (score >= 90)
{
    Console.WriteLine("优秀");
}
else if (score >= 80)
{
    Console.WriteLine("良好");
}
else if (score >= 60)
{
    Console.WriteLine("及格");
}
else
{
    Console.WriteLine("不及格");
}

注意:判断顺序不能颠倒,如果先写 >=60,90分会直接匹配60分支,逻辑出错。

4. 嵌套 if-else(分支内部再套判断)

在if/else代码块中继续写条件判断,适合多层校验场景。

示例:判断是否成年且有无驾照
int age = 22;
bool hasDriverLicense = true;

if (age >= 18)
{
    Console.WriteLine("已成年");
    if (hasDriverLicense)
    {
        Console.WriteLine("可以开车上路");
    }
    else
    {
        Console.WriteLine("成年但没有驾照,不能开车");
    }
}
else
{
    Console.WriteLine("未成年,禁止驾驶");
}

三、关键语法规则(踩坑重点)

  1. 条件只能是 bool
    C# 严格语法,不能写 if(1)if(0),必须写成 if(num != 0)
    错误写法:

    int num = 10;
    if(num) // 编译报错,无法把int转bool
    {}
    

    正确写法:

    if(num > 0)
    {}
    
  2. 省略大括号的陷阱
    只有紧跟if的一行代码属于分支,后续代码不受控制:

    int a = 5;
    if(a > 10)
        Console.WriteLine("大于10");
        Console.WriteLine("永远会执行"); // 不属于if内部
    
  3. else 就近匹配原则
    else 永远匹配离它最近、未配对的if:

    int x = 3;
    if (x > 1)
        if (x > 5)
            Console.WriteLine("大于5");
        else
            Console.WriteLine("1~5之间"); // 匹配内层if
    

    规范写法:统一加花括号消除歧义。

  4. 逻辑运算符组合多条件

    • && 逻辑与:全部条件true才成立
    • || 逻辑或:任意一个true就成立
    • ! 逻辑非:取反
    int age = 25;
    bool vip = true;
    // 年满18 并且 是VIP
    if (age >= 18 && vip)
    {
        Console.WriteLine("VIP会员通道");
    }
    

四、三元运算符(if-else简写)

简单二分支可使用三元 条件 ? 真表达式 : 假表达式,等价于单行if-else。

int score = 70;
string res = score >= 60 ? "及格" : "不及格";
Console.WriteLine(res);

限制:只能写表达式,不能执行多行代码、Console输出等复杂逻辑。

五、完整可运行Demo(控制台程序)

using System;

namespace IfElseDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("请输入你的分数:");
            int score = Convert.ToInt32(Console.ReadLine());

            if (score >= 90)
            {
                Console.WriteLine("评级:优秀");
            }
            else if (score >= 80)
            {
                Console.WriteLine("评级:良好");
            }
            else if (score >= 60)
            {
                Console.WriteLine("评级:及格");
            }
            else
            {
                Console.WriteLine("评级:不及格");
            }

            // 嵌套判断演示
            Console.Write("输入年龄:");
            int age = Convert.ToInt32(Console.ReadLine());
            if (age >= 18)
            {
                Console.WriteLine("成年人");
                Console.Write("是否有驾照(true/false):");
                bool license = Convert.ToBoolean(Console.ReadLine());
                if (license)
                {
                    Console.WriteLine("允许驾车");
                }
                else
                {
                    Console.WriteLine("无驾照不能开车");
                }
            }
            else
            {
                Console.WriteLine("未成年人禁止驾车");
            }
        }
    }
}

六、常见面试/开发问题总结

  1. C# if 和 C++ if 最大区别?
    C# 判断条件强制bool,不支持数字隐式布尔转换。
  2. else if 和多个独立if的区别?
    else if:互斥,匹配一个就结束;多个if:独立判断,全部条件都会校验。
  3. 什么时候用嵌套if,什么时候用逻辑&&合并条件?
    简单多条件用&&;分层校验、需要中间输出日志时用嵌套if。
  4. 三元运算符和if-else怎么选?
    仅简单赋值用三元,复杂逻辑优先if-else可读性更高。

七、学习小结

  1. if:单一条件判断;
  2. if-else:二选一逻辑;
  3. if-else if:多区间、多选项判断;
  4. 嵌套if:多层递进校验;
  5. 条件必须为布尔值,开发规范统一使用大括号包裹代码块。

更多推荐