首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何突破IF语句

如何突破IF语句
EN

Stack Overflow用户
提问于 2015-03-27 17:30:27
回答 13查看 140.8K关注 0票数 43

我的代码是这样的:

代码语言:javascript
复制
public void Method()
{
    if(something)
    {
        //some code
        if(something2)
        {
            now I should break from ifs and go to te code outside ifs
        }
    return;
    }
    // The code i want to go if the second if is true
}

我想知道在ifs之后是否有可能在不使用任何goto语句或将其余代码提取到其他方法的情况下转到该代码。

更新:

是的,我知道否则;)但是这段代码非常长,如果第一个IF为false,第一个IF为true,第二个IF为false,则应该运行此代码。所以我认为提取方法是最好的主意

EN

回答 13

Stack Overflow用户

回答已采纳

发布于 2015-03-27 17:37:10

回答你的问题:

代码语言:javascript
复制
public void Method()
{
    do
    {
        if (something)
        {
            // some code
            if (something2)
            {
                break;
            }
            
            return;
        }
        break;
    }
    while( false );

    // The code I want to go if the second `if` is true
}
票数 46
EN

Stack Overflow用户

发布于 2017-03-21 09:51:15

你可以使用goto跳过一些代码。在本例中,如果thing1为true,则跳过对things2的检查。

代码语言:javascript
复制
if (something) {
    do_stuff();
    if (thing1) { 
        do_thing1();
        goto SkipToEnd;
    }
    if (thing2) {
        do_thing2();
    }
SkipToEnd:
    do_thing3();
}
票数 21
EN

Stack Overflow用户

发布于 2018-05-16 07:44:30

这是我几年前学到的东西的变体。显然,这在C++开发人员中很受欢迎。

首先,我想我知道你为什么要打破IF代码块。对我来说,我不喜欢一堆嵌套的代码块,因为1)它让代码看起来很乱,2)如果你必须移动逻辑,它可能是一个需要维护的pia。

请考虑使用do/while循环:

代码语言:javascript
复制
public void Method()
{
    bool something = true, something2 = false;

    do
    {
        if (!something) break;

        if (something2) break;

    } while (false);
}

由于硬编码的false条件,do/while循环保证只运行一次,就像IF块一样。如果你想提前退出,只需使用break即可。

票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29297305

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档