news 2026/11/6 1:41:19

C# 系列教程_8 循环语句 保姆级精讲(面向新手)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C# 系列教程_8 循环语句 保姆级精讲(面向新手)

前置回顾

  • 顺序结构:代码从上到下执行一次
  • 分支判断(if/switch):选择性执行,代码最多跑一遍
  • 循环:让一段代码重复执行,直到满足退出条件。

C# 4 种循环:

  1. while先判断,后执行(有可能一次都不执行)
  2. do-while先执行,后判断(至少执行 1 次)
  3. for:已知循环次数首选(计数器循环)
  4. foreach:专门遍历集合 / 数组(后面讲数组时重点用)

配套两个循环控制关键字:

  • break:立刻终止整个循环,跳出循环
  • continue:立刻结束本次循环,直接进入下一轮条件判断

学习路线:

  1. while 循环
  2. do-while 循环
  3. for 循环(最常用,重点)
  4. break 和 continue
  5. 嵌套循环
  6. foreach 简介
  7. 新手坑点汇总
  8. 实战练习

1 while 循环:先判断,再执行

语法:

while(布尔条件) { //循环体:条件true时重复执行 }

执行流程:

  1. 检查括号内条件
  2. ✅true → 进入大括号执行循环体;执行完回到步骤 1 再次判断
  3. ❌false → 直接跳出 while 循环,继续执行循环后面代码

⚠️关键点:条件一开始就是 false,循环体一次都不会执行⚠️死循环大坑:循环内部必须有修改条件的代码,否则条件永远 true,无限循环!

示例 1:打印 1~5

using System; namespace WhileDemo { class Program { static void Main(string[] args) { int i = 1; //循环计数器,初始化在循环外面 while(i <= 5) { Console.WriteLine(i); i++; //修改计数器!靠近循环末尾,改变条件 } Console.WriteLine("循环结束"); } } }

机理拆解,一步步走

  1. i=1,判断1 <=5→ true → 打印 1 →i++→ i=2
  2. 判断2 <=5→ true → 打印 2 →i++→ i=3
  3. 判断3 <=5→ true → 打印 3 →i++→ i=4
  4. 判断4 <=5→ true → 打印 4 →i++→ i=5
  5. 判断5 <=5→ true → 打印 5 →i++→ i=6
  6. 判断6 <=5→ false → 退出 while,打印 “循环结束”

如果删掉i++;,i 永远等于 1,条件永远 true →死循环,程序卡住。

示例 2:条件初始 false,循环不执行

int i = 10; while(i <=5) { Console.WriteLine(i); i++; } Console.WriteLine("结束");

第一次判断10<=5→ false,循环体一次不跑。


2 do-while 循环:先执行,后判断

语法:

do { //循环体,先执行一次 }while(布尔条件); //末尾分号!新手容易漏掉

执行流程:

  1. 先直接执行一次大括号内循环体
  2. 再判断 while 条件
  3. true → 回到 do 继续循环;false → 跳出循环

特点:无论条件真假,循环体至少执行 1 次

示例:打印 1~5

static void Main() { int i = 1; do { Console.WriteLine(i); i++; } while (i <= 5); //⚠️末尾分号! Console.WriteLine("循环结束"); }

while 和 do-while 对比小例子

int i = 10; Console.WriteLine("while:"); while(i <=5) { Console.WriteLine(i); i++; } Console.WriteLine("do-while:"); int j = 10; do { Console.WriteLine(j); j++; } while (j <=5);

运行结果: while 无输出;do-while 会打印 10,然后判断条件不成立退出。

使用场景:需要至少执行一次,比如:输入密码,先输入,再判断是否正确。

实战示例:密码输入

static void Main() { string pwd; do { Console.Write("请输入密码:"); pwd = Console.ReadLine(); } while (pwd != "123456"); Console.WriteLine("密码正确,登录成功"); }

机理:先让用户输入密码,再判断,满足 “至少输入一次” 的需求。


3 for 循环:已知循环次数,最常用⭐

while 的计数器分散在外面、循环内部;for 把初始化、条件、迭代全部写在一行,结构集中。

语法:

for(表达式1; 表达式2; 表达式3) { //循环体 }
  • 表达式 1:计数器初始化,只执行【一次】,循环开始前
  • 表达式 2:循环条件(bool),每次循环前判断
  • 表达式 3:迭代更新(i++),循环体执行完之后执行

三个部分用分号;隔开,不是逗号!

执行顺序(牢记这个顺序):

  1. 执行【表达式 1】(仅一次)
  2. 判断【表达式 2】条件
    • true → 执行循环体代码 → 执行【表达式 3】→回到步骤 2
    • false → 直接跳出 for 循环

示例:打印 1~5

static void Main() { for(int i = 1; i <=5; i++) { Console.WriteLine(i); } Console.WriteLine("循环结束"); }

机理拆解,逐轮跟踪

  1. int i=1(只执行一次)
  2. 判断i<=5→ true,打印 1 → 执行i++,i=2
  3. 判断i<=5→ true,打印 2 → 执行i++,i=3
  4. 判断i<=5→ true,打印 3 → 执行i++,i=4
  5. 判断i<=5→ true,打印 4 → 执行i++,i=5
  6. 判断i<=5→ true,打印 5 → 执行i++,i=6
  7. 判断i<=5→ false,退出循环

变量作用域:int i在 for 括号内定义,i 只能在 for 循环内部使用,循环外部访问不到。

示例:倒序打印 5 ~ 1

for(int i =5; i >=1; i--) { Console.WriteLine(i); }

for 循环三部分都可以省略(不推荐新手写)for(;;)三个都空,条件默认为 true → 死循环。

✅什么时候选 for:明确知道循环要执行多少次(循环 10 次、遍历 10 个数字) ✅什么时候选 while:不知道循环多少次,只知道停止条件(密码输入,直到输入正确)


4 break 与 continue 循环控制关键字

break:立刻终止整个循环,跳出循环

只要执行break;,循环直接结束,后面循环不再执行。

示例:找到数字 3 就停止循环

for(int i =1; i <=5; i++) { if(i == 3) { break; //直接跳出for循环 } Console.WriteLine(i); } Console.WriteLine("循环结束");

输出:

1 2 循环结束

机理:i=3 触发 break,整个 for 循环直接终止,后面 i=4、i=5 不再执行。

continue:结束当前这一轮循环,直接进入下一轮条件判断

continue:本轮后面代码不执行,不会跳出整个循环,直接跳到迭代 / 条件判断。

示例:遇到 3 跳过,不打印 3

for(int i =1; i <=5; i++) { if(i == 3) { continue; //跳过本轮剩下代码,直接i++,下一轮判断 } Console.WriteLine(i); }

输出:

1 2 4 5

机理:i=3 触发 continue → Console.WriteLine (i) 被跳过 → 执行 i++,进入下一轮判断。

⚠️ while 里面使用 continue 小心死循环! while 中 continue 会直接跳回条件判断,如果 continue 前面没有写 i++,计数器不会更新,死循环。

int i = 1; while(i <=5) { if(i ==3) { continue; //⚠️直接跳去判断 i<=5,i永远等于3!死循环 } Console.WriteLine(i); i++; }

#5 嵌套循环:循环里面再套循环

外层循环执行一次,内层循环完整跑完一整轮。 常用场景:打印九九乘法表、二维表格。

示例:打印 2 行,每行打印 3 个星号

static void Main() { //外层:控制行数 for(int row = 1; row <=2; row++) { //内层:控制一行里面的星号数量 for(int col = 1; col <=3; col++) { Console.Write("*"); //不换行打印 } Console.WriteLine(); //一行结束,换行 } }

输出:

*** ***

机理:

  1. row=1:进入外层循环,内层循环 col 从 1 到 3,打印 3 个 * → 换行;内层结束
  2. row=2:进入外层循环,内层循环 col 从 1 到 3,打印 3 个 * → 换行;内层结束
  3. row=3,条件不满足,外层循环结束。

break 只能跳出当前所在一层循环,不会一次性跳出多层嵌套循环。


#6 foreach 循环(拓展,遍历数组 / 集合) foreach 专门用来遍历数组、集合,没有计数器,不能修改元素。 语法:

foreach(var item in 数组) { }

示例:

int[] arr = {10,20,30}; foreach(int num in arr) { Console.WriteLine(num); }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!