跳转到内容

C Sharp Break Continue

来自代码酷

C# Break Continue[编辑 | 编辑源代码]

BreakContinue 是 C# 中用于控制循环执行流程的关键字。它们允许程序员在特定条件下提前终止循环或跳过当前迭代,从而更灵活地控制程序逻辑。

介绍[编辑 | 编辑源代码]

在 C# 中,循环结构(如 `for`、`while`、`do-while` 和 `foreach`)通常会按照既定条件执行,但有时我们需要在满足某些条件时改变循环的行为:

  • break:立即终止整个循环,跳出循环体。
  • continue:跳过当前迭代的剩余部分,直接进入下一次循环。

这两个关键字通常与条件语句(如 `if`)结合使用,以实现更精细的流程控制。

break 语句[编辑 | 编辑源代码]

`break` 语句用于强制退出当前循环,不再执行循环体内的剩余代码,并继续执行循环之后的语句。

语法[编辑 | 编辑源代码]

while (condition)
{
    // 代码块
    if (breakCondition)
    {
        break; // 退出循环
    }
    // 其他代码(在 break 后不会执行)
}

示例[编辑 | 编辑源代码]

for (int i = 1; i <= 10; i++)
{
    if (i == 5)
    {
        break; // 当 i 等于 5 时终止循环
    }
    Console.WriteLine(i);
}

输出:

1
2
3
4

解释: 循环在 `i` 等于 5 时被 `break` 终止,因此只输出 1 到 4。

continue 语句[编辑 | 编辑源代码]

`continue` 语句用于跳过当前迭代的剩余部分,直接进入下一次循环。

语法[编辑 | 编辑源代码]

for (initialization; condition; iteration)
{
    // 代码块
    if (continueCondition)
    {
        continue; // 跳过本次迭代
    }
    // 其他代码(在 continue 后不会执行)
}

示例[编辑 | 编辑源代码]

for (int i = 1; i <= 5; i++)
{
    if (i == 3)
    {
        continue; // 跳过 i = 3 的迭代
    }
    Console.WriteLine(i);
}

输出:

1
2
4
5

解释: 当 `i` 等于 3 时,`continue` 跳过了 `Console.WriteLine(i)`,因此 3 没有被输出。

实际应用场景[编辑 | 编辑源代码]

搜索算法中的 break[编辑 | 编辑源代码]

在搜索数组中某个元素时,一旦找到目标即可使用 `break` 提前终止循环,提高效率。

int[] numbers = { 10, 20, 30, 40, 50 };
int target = 30;
bool found = false;

for (int i = 0; i < numbers.Length; i++)
{
    if (numbers[i] == target)
    {
        found = true;
        break; // 找到后立即退出循环
    }
}
Console.WriteLine($"元素 {target} {(found ? "找到" : "未找到")}");

输出:

元素 30 找到

数据处理中的 continue[编辑 | 编辑源代码]

在处理数据时,可能需要跳过某些不符合条件的项。

int[] scores = { 85, 90, 55, 70, 45 };
int passingScore = 60;

foreach (int score in scores)
{
    if (score < passingScore)
    {
        continue; // 跳过不及格的分数
    }
    Console.WriteLine($"及格分数: {score}");
}

输出:

及格分数: 85
及格分数: 90
及格分数: 70

嵌套循环中的 break 和 continue[编辑 | 编辑源代码]

在嵌套循环中,`break` 和 `continue` 仅影响最内层的循环。

示例[编辑 | 编辑源代码]

for (int i = 1; i <= 3; i++)
{
    for (int j = 1; j <= 3; j++)
    {
        if (j == 2)
        {
            break; // 仅退出内层循环
        }
        Console.WriteLine($"i = {i}, j = {j}");
    }
}

输出:

i = 1, j = 1
i = 2, j = 1
i = 3, j = 1

解释: 当 `j == 2` 时,内层循环被 `break` 终止,但外层循环继续执行。

流程图[编辑 | 编辑源代码]

使用 Mermaid 展示 `break` 和 `continue` 的流程:

graph TD A[开始循环] --> B{条件满足?} B -->|是| C[执行循环体] C --> D{遇到 break?} D -->|是| E[退出循环] D -->|否| F{遇到 continue?} F -->|是| G[跳过剩余代码] G --> B F -->|否| H[继续执行循环体] H --> B B -->|否| I[循环结束]

数学表示[编辑 | 编辑源代码]

`break` 和 `continue` 可以形式化表示为:

  • break:设循环条件为 C,则 break¬C(强制使条件为假)。
  • continue:设当前迭代为 i,则 continueii+1(直接进入下一次迭代)。

总结[编辑 | 编辑源代码]

  • `break` 用于完全退出循环。
  • `continue` 用于跳过当前迭代。
  • 两者通常与条件语句配合使用。
  • 在嵌套循环中,它们仅影响最近的循环层。

合理使用 `break` 和 `continue` 可以使代码更简洁高效,但过度使用可能导致逻辑难以理解,建议在必要时谨慎使用。