前言
编程就像给计算机写一份"烹饪指南",而条件分支 和循环就是这份指南中的关键指令。想象你要教机器人做蛋糕:
- 条件分支 :"如果没有鸡蛋了,就去超市买"(做决定)
- 循环 :"重复搅拌面糊100次"(重复动作)
本文会用简单易懂的语言和比喻,带你掌握C#中这两个核心概念。新手友好,放心食用!
一、条件分支:让程序学会"做选择"
1. if-else语句(基础版选择器)
cs
if (今天下雨)
{
Console.WriteLine("带伞出门");
}
else
{
Console.WriteLine("开心晒太阳");
}
像地铁的闸机,满足条件(刷卡成功)开闸放行,否则(刷卡失败)拦下你。
- 代码从上往下执行,一旦满足某个条件,跳过其他所有分支
- 多个条件时用
else if
:
cs
if (成绩 >= 90) // 先判断最严格的条件
{
Console.WriteLine("A");
}
else if (成绩 >= 60) // 前一个不满足才会到这里
{
Console.WriteLine("及格");
}
else // 所有条件都不满足
{
Console.WriteLine("加油!");
}
实战示例:
cs
int score = 85;
// 示例1:简单条件
if (score >= 60) // true
{
Console.WriteLine("及格");
}
else
{
Console.WriteLine("不及格");
}
// 示例2:多重条件
if (score >= 90) // false
{
Console.WriteLine("优秀");
}
else if (score >= 80) // true
{
Console.WriteLine("良好");
}
else // 跳过
{
Console.WriteLine("一般");
}
2. switch语句(多选项选择器)
cs
switch(要判断的变量) // 👉 这里是"被检测对象"
{
case 值1: // 👉 像储物柜的编号标签
// 代码块1
break; // 🚨 必须存在的出口
case 值2:
// 代码块2
break;
default: // 🔑 万能钥匙(其他所有情况)
// 默认代码
break;
}
cs
string weather = "大雨";
// 传统写法
switch (weather)
{
case "晴": // false
Console.WriteLine("去野餐");
break;
case "小雨": // false
Console.WriteLine("带伞出门");
break;
case "大雨": // true
Console.WriteLine("宅家睡觉");
break;
default: // 未触发
Console.WriteLine("正常上班");
break;
}
// 类型匹配(C# 7.0+)
object data = 150;
switch (data)
{
case int num when num > 100: // true(满足类型int且值>100)
Console.WriteLine("超额完成");
break;
case string text: // false(类型不匹配)
Console.WriteLine("文字信息");
break;
}
像老式电话转盘,转到对应号码(case)才接通。
- 每个case必须用
break
或return
结尾(防止"漏电"执行下一个case)
cs
switch(未知物体)
{
case int x: // 如果是整数
Console.WriteLine($"数字:{x}");
break;
case string s:// 如果是字符串
Console.WriteLine($"文字:{s}");
break;
}
📌 必须牢记的规则
1.冒号的位置
每个case后面必须跟英文冒号:
(中文冒号会报错!)
cs
case 10: // ✅ 正确
case 10: // ❌ 错误(中文冒号)
2.break的重要性
每个非空case块必须用break
或return
结束(防止"穿透"执行下一个case)所以这里如果你的两个case执行的代码是一样的话,你就可以尝试贯穿!
cs
case 1:
Console.WriteLine("One");
// ❌ 这里缺少break会导致编译错误
3.匹配机制
传统用法:精确匹配常量值(像精确查找字典页)
cs
switch(考试等级)
{
case 'A': // 精确匹配字符A
GivePrize();
break;
case 'B':
Encourage();
break;
}
现代用法:类型匹配+条件过滤(C# 7.0+)
cs
switch(未知物体)
{
case int num when num > 100: // 先匹配类型,再加条件
Console.WriteLine("大数字");
break;
case string text when text.Length > 5:
Console.WriteLine("长文本");
break;
}
要素 | 说明 | 类比 |
---|---|---|
switch(变量) | 被检测的"嫌疑人" | 机场安检的行李 |
case 值: | 嫌疑人的"特征标签" | 行李X光显示的金属物品 |
break | 结束检查的"通关口令" | 安检员放行的OK手势 |
when条件 | 更精细的"特征识别" | 开箱检查的详细流程 |
default | "其他所有未知物品"处理通道 | 无标签行李的特殊处理通道 |
二、循环语句:让程序学会"重复劳动"
1. for循环(精确控制次数)
cs
// 打印1~5的数字
for (int i=1; i<=5; i++)
{
Console.WriteLine(i);
}
执行顺序 :
① int i=1
→ ② i<=5
→ ③ 执行代码 → ④ i++
→ 重复②③④...
2. foreach循环(遍历集合)(迭代器)
cs
string[] 水果 = {"苹果", "香蕉", "橘子"};
foreach (var 单个水果 in 水果)
{
Console.WriteLine(单个水果);
}
cs
string[] fruits = { "苹果", "香蕉", "橘子" };
foreach (var fruit in fruits) // 遍历3个元素
{
Console.Write(fruit + " ");
}
// 输出:苹果 香蕉 橘子
禁忌:循环中不能增删集合元素!否则会报错(像边吃糖果边往盒子里放新糖)
3. while/do-while(条件循环)
cs
// while:先检查条件再执行
while (水没烧开)
{
继续加热();
}
// do-while:至少执行一次
do {
敲门();
} while (没人回应);
cs
int count = 3;
while (count > 0) // 循环3次
{
Console.Write(count + " ");
count--;
}
// 输出:3 2 1
// 当count=0时条件 → false
cs
int x = 0;
do
{
Console.Write(x + " ");
x++;
} while (x < 0); // 条件初始为false
// 输出:0
区别:while像"先看红灯再停车",do-while像"先按门铃再等回应"
三、循环控制双子星:break和continue
1. break:立刻停止循环
cs
for (int i=1; i<=10; i++)
{
if (i == 5)
{
break; // 当i=5时,直接结束整个循环
}
Console.WriteLine(i);
}
// 输出:1 2 3 4
像煮面时突然发现糊锅了,立即关火停止。
2. continue:跳过本次循环
cs
for (int i=1; i<=5; i++)
{
if (i == 3)
{
continue; // 跳过i=3这次循环
}
Console.WriteLine(i);
}
// 输出:1 2 4 5
对比记忆:
break | continue | |
---|---|---|
作用范围 | 整个循环 | 当前这次循环 |
常见场景 | 找到目标后提前退出 | 过滤特定条件数据 |
结语
掌握条件分支和循环,你就拿到了编写"智能程序"的钥匙。记住两个核心思想:
- 条件分支:让程序在不同情况下做出不同反应
- 循环:让机器不厌其烦地处理重复工作
一起加油!