使用goto Statement的最佳选择是什么

时间:2018-03-12 10:28:14

标签: c#

我正在清理一个应该能够用更易读的替代方案替换所有 goto语句的程序。我在循环中遇到了这种问题。这是代码。

for (int i = 0; i < 100; i++)
{
labelReturn:
    //Some Code

    for (int j = 0; j < 20; j++)
    {
        y = i * x + j
        if (y == 5)
        {
            i++;
            goto labelReturn;
        }
    }
    //If Statement{}
    //Some Code
}

如果我用break替换i++; goto labelReturn;。它只是打破当前的for循环,它将执行下一个“If”语句。有没有办法可以打破循环并继续迭代而不执行下一个代码/语句。

3 个答案:

答案 0 :(得分:1)

只需创建一些标志,指示 inner 循环中的条件是否满足,如果是,则跳过该内循环后的代码:

for (int i = 0; i < 100; i++)
{
    bool found = false;
    //Some Code

    for (int j = 0; j < 20; j++)
    {
        y = i * x + j
        if (y == 5)
        {
            i++;
            found = true;
            break;
        }
    }
    if(found) // do something

}

答案 1 :(得分:1)

您可以在内循环调用continue之后调用break

for (int i = 0; i < 100; i++)
{
    //Some Code

    for (int j = 0; j < 20; j++)
    {
        y = i * x + j
        if (y == 5)
        {
            break;
        }
    }
    if (y == 5)
        continue;
    //If Statement{}
    //Some Code
}

答案 2 :(得分:0)

或者

for (int i = 0; i < 100; i++)
{
    //Some Code
    int j;
    for (j = 0; j < 5; j++)
    {
         // if (something) break;
    }
    if( j < 5) // do something

}