C#选择结构完全教程(if单分支、双分支、多分支、switch穿透)零基础完整版
一、程序三大基础结构(必背)
所有程序代码,只由三种结构组成:
-
顺序结构:代码从上往下逐行执行(默认全部代码都是顺序执行)
-
选择结构:根据条件真假,选择性执行代码(本节课重点:if / switch)
-
循环结构:重复执行某段代码(后续 for / while 学习)
二、C# 所有选择结构 5 种写法
1. 三元运算符 ?:(简短二选一)
2. 单分支 if(满足才执行,不满足跳过)
3. 双分支 if-else(二选一,必执行一段)
4. 多分支 if else if else(多区间判断)
5. switch-case(精准固定值匹配)
三、单分支 if 结构(最基础)
1. 语法格式
if (布尔条件)
{
// 条件为 true 才执行
}
2. 核心规则
-
if 括号里 只能是 true / false
-
条件成立 → 执行大括号代码
-
条件不成立 → 直接跳过,不执行任何内容
3. 实战案例:判断成年
int age = 20;
if (age > 18)
{
Console.WriteLine("已成年,可以进入");
}
4. 超级易错点(必考坑)
错误1:if 后面不能加分号!!
if(age > 18); // 致命坑!分号代表语句结束
{
Console.WriteLine("成年"); // 这段代码永远执行,不受if控制
}
错误2:判断相等必须用 ==,不能用 =
-
if(age = 18)赋值,报错 -
if(age == 18)判断相等,正确
错误3:if 不能写数字
- C# 严格布尔语法:
if(1)、if(0)全部报错
四、双分支 if-else 结构(二选一)
1. 语法格式
if (条件)
{
// true 执行
}
else
{
// false 执行
}
2. 核心特点
一定会执行其中一段代码,没有第三种情况
3. 案例1:成年未成年判断
int age = 20;
if (age > 18)
{
Console.WriteLine("已成年");
}
else
{
Console.WriteLine("未成年");
}
4. 案例2:奇偶判断(结合取余 %)
int num = 7;
if (num % 2 == 0)
{
Console.WriteLine("偶数");
}
else
{
Console.WriteLine("奇数");
}
5. 案例3:上位机温度判断
double temp = 65;
if (temp > 60)
{
Console.WriteLine("温度超标,启动报警");
}
else
{
Console.WriteLine("温度正常");
}
6. 双分支注意事项
-
else不能写条件、不能写括号
-
if 和 else 中间不能插无关代码
-
else 永远匹配「最近的未配对if」
单分支 vs 双分支 对比
| 类型 | 特点 | 适用场景 |
|---|---|---|
| 单分支if | 满足才执行,不满足直接跳过 | 只需处理成功情况,失败不用提示 |
| 双分支if-else | 真假必执行一段 | 两种情况都需要反馈(正常/异常、成年/未成年) |
五、Switch 选择结构(精准值匹配)
1. switch 适用场景
-
if:适合区间判断(> < >= <=)
-
switch:适合固定精准值匹配(档位、状态、月份、选项)
2. switch 支持的数据类型
int、string、char、enum(不支持 double、小数、区间)
3. 标准语法
switch(变量)
{
case 值1:
//匹配成功执行
break;
case 值2:
//匹配成功执行
break;
default:
//全部不匹配时执行(类似else)
break;
}
4. 核心重点 break(必考)
-
break 作用:跳出 switch
-
不写 break 会发生 case穿透(继续执行下一个case)
六、Switch 穿透用法(高级必考)
1. 穿透原理
多个case 不写break → 自动往下执行 → 直到遇到break停止
作用:多个值共用同一套代码,避免重复书写
2. 经典四季判断(完整可运行)
int month = int.Parse(Console.ReadLine());
switch (month)
{
case 3:
case 4:
case 5:
Console.WriteLine("春季");
break;
case 6:
case 7:
case 8:
Console.WriteLine("夏季");
break;
case 9:
case 10:
case 11:
Console.WriteLine("秋季");
break;
case 12:
case 1:
case 2:
Console.WriteLine("冬季");
break;
default:
Console.WriteLine("输入月份不合法");
break;
}
3. 穿透执行流程举例
输入 3 → 进入case3,无break → 自动执行case4、case5代码 → 打印春季 → break结束
七、选择结构全部易错点终极总结
-
if后不能加分号,会废掉判断结构
-
判断相等用==,不能用=
-
if括号内只能布尔,不能写数字
-
else 不带条件、不带括号
-
switch case 只能写固定常量,不能写表达式
-
switch 每个case正常必须带break
-
穿透只用于「多值共用同一逻辑」场景
-
switch 不支持小数、区间判断
八、选择结构使用场景总结(面试常问)
-
简单二选一:三元运算符
-
只需要处理满足条件:单分支if
-
两种情况都要处理:if-else
-
区间范围判断(分数、温度、数值分级):if else if
-
固定精准值、档位、状态:switch-case(穿透简化代码)

浙公网安备 33010602011771号