C# - For循环
C# - for 循环
Section titled “C# - for 循环”for 循环是一种重复控制结构,允许你有效地执行代码块特定次数。当你知道需要迭代多少次时,例如处理数组中的每个项目时,它是理想的选择。
for 循环的语法
Section titled “for 循环的语法”for 循环语法由三部分组成,用分号分隔:
for (initializer; condition; iterator){ // 每次迭代要执行的代码}initializer(初始化器):在循环开始前执行一次。你在这里声明并初始化循环控制变量(例如,var i = 0)。condition(条件):在每次迭代前进行评估。如果为true,则执行循环体。如果为false,则循环终止。iterator(迭代器):在每次迭代后执行。这通常用于增加或减少循环变量(例如,i++)。
for 循环的执行流程可以可视化如下:
[ 开始 ] | v[ 1. 初始化器 (只运行一次) ] | v[ 2. 条件检查 ] --(为 true)--> [ 3. 循环体执行 ] ^ | | | |(为 false) | | | v | `---->[ 结束循环 ] [ 4. 迭代器执行 ] | | `----------------------------------------`示例:一个基本计数器
Section titled “示例:一个基本计数器”此示例打印从 1 到 5 的数字。请注意循环变量使用了 var 关键字,以及更常见的 i++ 递增运算符。
using System;
Console.WriteLine("Starting countdown...");
for (var i = 1; i <= 5; i++){ Console.WriteLine($"Value of i: {i}");}
Console.WriteLine("...Blast off!");执行后,此代码将产生:
Starting countdown...Value of i: 1Value of i: 2Value of i: 3Value of i: 4Value of i: 5...Blast off!for 与 foreach
Section titled “for 与 foreach”虽然 for 循环非常适合使用索引进行迭代,但当不需要索引时,foreach 循环通常是迭代数组和列表等集合的更简单、更安全的选择。
var fruits = new string[] { "Apple", "Banana", "Cherry" };
// 使用 'for' 循环(如果你需要索引)Console.WriteLine("\n--- Using for loop ---");for (var i = 0; i < fruits.Length; i++){ Console.WriteLine($"Index {i}: {fruits[i]}");}
// 使用 'foreach' 循环(更简单,推荐用于简单迭代)Console.WriteLine("\n--- Using foreach loop ---");foreach (var fruit in fruits){ Console.WriteLine(fruit);}循环控制语句:break 和 continue
Section titled “循环控制语句:break 和 continue”你可以使用控制语句改变循环的流程:
break:立即终止循环。continue:跳过当前迭代的其余部分,并继续下一次迭代。
// 'break' 和 'continue' 的示例for (int i = 1; i <= 10; i++){ if (i % 2 != 0) { // 跳过奇数 continue; }
if (i > 8) { // 如果数字大于 8,则退出循环 break; }
Console.WriteLine($"Processing even number: {i}");}这只会打印 Processing even number: 2、4、6 和 8。
1. 用于二维数据(例如,网格、表格)的嵌套循环
Section titled “1. 用于二维数据(例如,网格、表格)的嵌套循环”嵌套的 for 循环非常适合处理二维结构,例如打印乘法表。
for (int i = 1; i <= 5; i++){ for (int j = 1; j <= 5; j++) { // 使用填充来整齐地对齐数字 Console.Write($"{i * j, -4}"); // -4 表示左对齐,占用 4 个空格 } Console.WriteLine(); // 每行结束后换到下一行}2. 数据处理和转换
Section titled “2. 数据处理和转换”使用 for 循环原地修改数组或列表中的元素。
var numbers = new int[] { 10, 20, 30, 40, 50 };
// 将数组中的每个数字翻倍for (int i = 0; i < numbers.Length; i++){ numbers[i] *= 2;}
Console.WriteLine($"Transformed array: {string.Join(", ", numbers)}");// 输出: Transformed array: 20, 40, 60, 80, 100- 差一错误(Off-by-One Errors):小心你的条件。使用
<=和<可能会导致错误。对于零索引数组arr,条件应该是i < arr.Length,而不是i <= arr.Length。 - 无限循环(Infinite Loops):确保你的迭代器和条件最终会导致循环终止。像
for(int i = 0; i >= 0; i++)这样的条件将永远运行下去。