C# - 循环
C# - 循环
Section titled “C# - 循环”在编程中,我们经常需要多次重复执行某个操作。为了避免一遍又一遍地编写相同的代码,我们使用循环(loops)。循环是一种控制结构,它允许你只要满足特定条件就重复执行一段代码。
循环的基本思想可以可视化为一个周期:
+-------------------------+ | 条件为真吗? | +-----------+-------------+ | 是 +---------v---------+ | 执行循环体 | +---------+---------+ | +---------v---------+ | 更新状态 | (例如,递增计数器) +---------+---------+ | +-----------+ (返回并再次检查条件)
+-----------+-------------+ | 否 | +-----------v-------------+ | 退出循环 | +-------------------------+C# 循环的类型
Section titled “C# 循环的类型”C# 提供了几种类型的循环,每种都适用于不同的场景。
| 循环类型 | 最佳应用场景 |
|---|---|
| for 循环 | 当你明确知道迭代次数时(例如,重复 10 次)。 |
| foreach 循环 | 遍历集合(如列表或数组)中的所有元素时。 |
| while 循环 | 当你希望在条件为真时持续循环,并且事先不知道迭代次数时。 |
| do-while 循环 | 类似于 while 循环,但保证循环体至少执行一次。 |
1. for 循环
Section titled “1. for 循环”for 循环非常适合当你需要执行一段代码特定次数时使用。它由三个部分组成:初始化器、条件和迭代器。
using System;
// 打印 1 到 5 的数字for (int i = 1; i <= 5; i++){ // i = 1: 初始化器(在开始时运行一次) // i <= 5: 条件(在每次迭代前检查) // i++: 迭代器(在每次迭代后运行) Console.WriteLine($"Current number: {i}");}输出:
Current number: 1Current number: 2Current number: 3Current number: 4Current number: 52. foreach 循环
Section titled “2. foreach 循环”foreach 循环提供了一种简单、清晰的方式来遍历集合中的元素,例如数组、列表或字典。对于此任务,它通常是最具可读性的选择。
using System;using System.Collections.Generic;
var fruits = new List<string> { "Apple", "Banana", "Cherry" };
// 遍历 'fruits' 列表中的每个元素foreach (var fruit in fruits){ Console.WriteLine($"I like {fruit}s!");}输出:
I like Apples!I like Bananas!I like Cherrys!3. while 循环
Section titled “3. while 循环”只要给定条件为 true,while 循环就会重复执行一段代码。条件在每次迭代之前检查。
using System;
int countdown = 3;
while (countdown > 0){ Console.WriteLine($"{countdown}..."); countdown--; // 改变变量以避免无限循环至关重要}
Console.WriteLine("Lift off!");输出:
3...2...1...Lift off!4. do-while 循环
Section titled “4. do-while 循环”do-while 循环类似于 while 循环,但条件在循环体执行之后检查。这保证了循环至少执行一次。
using System;
string? input;do{ Console.WriteLine("Enter 'exit' to quit:"); input = Console.ReadLine(); // ... 处理输入 ...} while (input != "exit");
Console.WriteLine("Program terminated.");循环控制语句
Section titled “循环控制语句”你可以使用控制语句改变循环的正常执行流程。
break:立即终止最内层的循环,并将控制权转移到循环之后的语句。continue:跳过当前迭代的其余部分,并继续进行循环的下一次迭代。
// `break` 和 `continue` 的示例for (int i = 1; i <= 10; i++){ if (i % 2 != 0) { continue; // 跳过奇数 }
if (i > 8) { break; // 如果数字大于 8,则退出循环 }
Console.WriteLine(i); // 此行仅对小于等于 8 的偶数运行}输出:
2468当循环的条件永不为 false 时,就会发生无限循环。虽然有时对于持续运行的服务是故意的,但它们通常是一个错误。要创建故意的无限循环,while(true) 比 for(;;) 更具可读性。
在真实世界的应用程序(例如后台服务)中,无限循环应与优雅停机(graceful shutdown)机制(例如 CancellationToken)结合使用,以允许循环安全地停止。