1. 引言
经常会遇到这种情况:你其实不需要把循环所有的迭代都跑完,只想在找到目标元素时就直接退出循环。还有时候,你想跳过某些处理,直接进入下一步(比如你读取了数据,想跳过它的处理)。 这就是在循环内部控制流程的典型场景。
C# 里的 break 和 continue 语句就是为这种需求设计的。咱们来看看它们到底怎么用、在实际开发中能帮你解决哪些问题。
2. break 语句:"停!到此为止!"
理论和语法
break 语句用来立刻跳出当前循环,不管你在循环体的哪个位置。一旦程序执行到 break,循环马上结束,接着从循环 后面 的第一行代码继续执行。
while (条件)
{
if (某个条件)
{
break;
}
// 循环的其他代码
}
在
while 循环里用
break
同样的写法也适用于 for 和 do-while:
for (int i = 0; i < 10; i++)
{
if (某个条件)
{
break;
}
// 循环的其他代码
}
例子1:判断一个数是不是质数
一个数如果只能被1和它本身整除,就是质数。我们要判断一个数是不是质数:遍历所有可能的因子,从2到n-1。如果发现能整除,说明不是质数,后面就不用再判断了——直接结束循环。
例子:
int number = 111;
bool found = false;
for (int i = 2; i < number; i++)
{
if (number % i == 0)
{
found = true;
Console.WriteLine("找到因子 " + i );
break; // 停止循环,没必要再找了!
}
}
if (!found)
{
Console.WriteLine("没找到因子 - 这个数是质数。");
}
例子2:校验用户输入
来写个小应用,比如一个交互式表单收集用户数据:
while (true)
{
Console.Write("请输入你的年龄: ");
string input = Console.ReadLine();
int age;
if (int.TryParse(input, out age) && age > 0)
{
Console.WriteLine($"很好!你的年龄是: {age}");
break; // 输入正确,结束循环!
}
else
{
Console.WriteLine("错误!请输入正确的正整数年龄。");
}
}
为什么要这样做:
有时候你需要让循环一直跑(或者跑很久),直到用户输入了正确的数据。一旦发生了你想要的事件——就用 break 彻底跳出循环。
3. continue 语句:"下一个!"
理论和语法
和 break 不一样,continue 语句不会结束整个循环,而是 跳过当前这次迭代:循环体里 continue 之后的代码都不会执行,直接进入下一轮循环。
for (int i = 0; i < 10; i++)
{
if (条件)
{
continue;
}
// 只有没触发 continue 才会执行这里
}
在
for 循环里用
continue
例子3:跳过偶数
假设你只想输出某个区间里的奇数,偶数要跳过。
for (int i = 1; i <= 10; i++)
{
if (i % 2 == 0)
{
continue; // 如果是偶数——跳过下面所有代码!
}
Console.WriteLine("奇数: " + i);
}
用
continue 跳过偶数
发生了什么:
当 i = 2, 4, 6... 时,循环遇到 continue,直接跳到下一轮,不会执行 Console.WriteLine。
逐步演示:
| i | i % 2 == 0 | 操作 |
|---|---|---|
| 1 | false | 打印,没触发continue |
| 2 | true | continue,没打印 |
| 3 | false | 打印,没触发continue |
| 4 | true | continue,没打印 |
| ... | ... | ... |
break 和 continue 这俩语句用得特别多,几乎每两个循环就有一个会用到。你用起来肯定会觉得很顺手。
GO TO FULL VERSION