CSharp(十三) 循环语句
C# 中的 循环语句 (Loop Statements)用于重复执行一段代码,主要包括 for 、 while 、 do-while 和 foreach 四种。
for 循环
适用于已知循环次数的场景
基本语法
for (初始化; 条件; 步长)
{
循环体
}
示例
// 打印 1 到 5
for (int i = 1; i <= 5; i++)
{
Console.WriteLine(i);
}
// 输出: 1 2 3 4 5
多种写法
// 递减
for (int i = 5; i >= 1; i--)
{
Console.WriteLine(i);
}
// 跳过某些值
for (int i = 0; i <= 10; i += 2)
{
Console.WriteLine(i); // 0, 2, 4, 6, 8, 10
}
// 多个变量
for (int i = 0, j = 10; i < j; i++, j--)
{
Console.WriteLine($"i={i}, j={j}");
}
while 循环
适用于条件控制,次数不确定的场景
基本用法
while (条件)
{
循环体
}
示例
int count = 0;
while (count < 5)
{
Console.WriteLine(count);
count++;
}
// 用户输入验证
string input = "";
while (input != "exit")
{
Console.Write("请输入 (exit 退出): ");
input = Console.ReadLine();
}
do-while 循环
至少执行一次,然后判断条件
基本语法
do
{
// 循环体
} while (条件);
示例
int num;
do
{
Console.Write("请输入一个正数: ");
num = int.Parse(Console.ReadLine());
} while (num <= 0);
Console.WriteLine($"你输入了: {num}");
foreach 循环
用于遍历集合或数组,无需索引
基本语法
foreach (变量 变量名 in 集合或数组)
{
循环体
}
示例
// 遍历数组
int[] numbers = { 1, 2, 3, 4, 5 };
foreach (int num in numbers)
{
Console.WriteLine(num);
}
// 遍历列表
List<string> names = new List<string> { "Alice", "Bob", "Charlie" };
foreach (string name in names)
{
Console.WriteLine(name);
}
// 遍历字典
Dictionary<int, string> dict = new Dictionary<int, string>
{
{ 1, "One" },
{ 2, "Two" }
};
foreach (var kvp in dict)
{
Console.WriteLine($"Key: {kvp.Key}, Value: {kvp.Value}");
}
循环控制语句
| 语句 | 作用 |
|---|---|
| break | 立即终止,退出整个循环 |
| continue | 跳过当前迭代,继续下一次 |
| return | 结束方法跳出循环 |
break
for (int i = 1; i <= 10; i++)
{
if (i == 5)
{
break; // 遇到 5 就结束循环
}
Console.WriteLine(i); // 输出: 1 2 3 4
}
continue 示例
for (int i = 1; i <= 5; i++)
{
if (i == 3)
{
continue; // 跳过 3
}
Console.WriteLine(i); // 输出: 1 2 4 5
}
嵌套循环
// 打印 9x9 乘法表
for (int i = 1; i <= 9; i++)
{
for (int j = 1; j <= i; j++)
{
Console.Write($"{j}x{i}={i*j}\t");
}
Console.WriteLine();
}
循环对比
| 循环 | 适用场景 | 特点 |
|---|---|---|
| for | 已知次数 | 初始化、条件、迭代都在一行 |
| while | 条件控制 | 可能一次都不执行 |
| do-while | 至少执行一次 | 先执行后判断 |
| foreach | 遍历集合 | 只读,不能修改元素 |
完整示例
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
// 1. 计算 1~100 的和
int sum = 0;
for (int i = 1; i <= 100; i++)
{
sum += i;
}
Console.WriteLine($"1~100 的和: {sum}"); // 5050
// 2. 找出列表中的第一个偶数
List<int> numbers = new List<int> { 1, 3, 5, 8, 9, 10 };
int? firstEven = null;
foreach (int num in numbers)
{
if (num % 2 == 0)
{
firstEven = num;
break; // 找到就退出
}
}
Console.WriteLine($"第一个偶数: {firstEven}"); // 8
// 3. 过滤奇数
Console.Write("偶数: ");
foreach (int num in numbers)
{
if (num % 2 != 0)
{
continue; // 跳过奇数
}
Console.Write($"{num} "); // 8 10
}
}
}
总结
- for 循环适用于已知次数的场景,初始化、条件、迭代都在一行
- while 循环适用于条件控制,次数不确定的场景
- do-while 循环至少执行一次,然后判断条件,直到满足条件
- foreach 循环适用于遍历集合或数组,无需索引
- break / continue → 控制循环流程