我的代码是这样的:
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,则应该运行此代码。所以我认为提取方法是最好的主意
发布于 2015-03-27 17:37:10
回答你的问题:
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
}
发布于 2017-03-21 09:51:15
你可以使用goto跳过一些代码。在本例中,如果thing1为true,则跳过对things2的检查。
if (something) {
do_stuff();
if (thing1) {
do_thing1();
goto SkipToEnd;
}
if (thing2) {
do_thing2();
}
SkipToEnd:
do_thing3();
}
发布于 2018-05-16 07:44:30
这是我几年前学到的东西的变体。显然,这在C++开发人员中很受欢迎。
首先,我想我知道你为什么要打破IF代码块。对我来说,我不喜欢一堆嵌套的代码块,因为1)它让代码看起来很乱,2)如果你必须移动逻辑,它可能是一个需要维护的pia。
请考虑使用do/while
循环:
public void Method()
{
bool something = true, something2 = false;
do
{
if (!something) break;
if (something2) break;
} while (false);
}
由于硬编码的false
条件,do/while
循环保证只运行一次,就像IF块一样。如果你想提前退出,只需使用break
即可。
https://stackoverflow.com/questions/29297305
复制相似问题