【问题标题】:How to stop(break) "for" loop in c#?如何在 C# 中停止(中断)“for”循环?
【发布时间】:2014-03-17 21:21:19
【问题描述】:

我需要在“for”循环自行结束之前停止它。我在另一个中有一个“for”循环。这是我的代码(一个简单的例子):

for (int i = 0; i < 100; i++)
        {
            for (int j = 0; j < 10; j++)
            {
                if (i == 5)
                {
                    //stop "for" cycle
                }
            }
        }

我想停止内部的“for”循环而不停止外部。 我应该使用哪个命令来管理它?

【问题讨论】:

标签: c# for-loop


【解决方案1】:

只有一层循环,你可以使用break

for (int i = 0; i < 100; i++)
{
    for (int j = 0; j < 10; j++)
    {
        if (i == 5)
        {
            break; // <== Exits the 'j' loop, returns control
                   //     to the 'i' loop which continues
        }
    }
}

对于嵌套循环,您可能希望使用设置为中断条件的变量(例如,bool)。看看this page,我认为 C# 没有像其他一些语言那样直接中断。

bool keepGoing = true;
for (int i = 0; keepGoing && i < 100; i++)
{
    for (int j = 0; keepGoing && j < 10; j++)
    {
        if (i == 5)
        {
            keepGoing = false; // Stops both
        }
    }
}

【讨论】:

    【解决方案2】:
        for (int i = 0; i < 100; i++)
        {
            for (int j = 0; j < 10; j++)
            {
                if (i == 5)
                {
                    break;
                }
            }
        }
    

    【讨论】:

      【解决方案3】:

      您可以使用break 语句(退出最内层循环),甚至可以使用标签中断。我个人不喜欢后者,因为这意味着您需要维护使代码难以阅读的标签。

      如果您需要退出精心设计的嵌套for 循环结构,则将整个内容编码为一个函数并使用return。然后你甚至可以返回一个值。

      【讨论】:

        【解决方案4】:

        你想用一个命令打破两个循环吗?使用 goto。

        for (int i = 0; i < 100; i++)
        {
            for (int j = 0; j < 100; j++)
            {
                if (i == 10 && j == 50)
                    goto Exit;
            }
        
            continue;
        
        Exit:
            break;
        }
        

        其他人已经发布了如何仅打破内部循环。

        【讨论】:

          猜你喜欢
          • 2022-01-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-04-16
          • 2020-06-16
          相关资源
          最近更新 更多