If statement 如何使内部if语句转到外部if语句的“else”?

If statement 如何使内部if语句转到外部if语句的“else”?,if-statement,If Statement,我在这件作品上遇到了麻烦: if (a) { if (b) // when this check fails, I need to go v doSomething(); // v } // v else // < here

我在这件作品上遇到了麻烦:

if (a)
{
    if (b)    // when this check fails, I need to go v
        doSomething(); //                            v
}                      //                            v
else                   //                           < here
    doSomethingElse(); 
我该怎么做


UPD:if语句是嵌套的,因为a检查对象是否为null,防止立即检查null对象的参数而导致异常。

除了在可用的情况下使用goto之外,唯一的方法是使用单独的条件保护外部if语句的else分支,而不是将其设置为else分支

if(a && b)
  doSomething();
else
  doSomethingElse();
假设嵌套之前有计算,如果这会阻止您同时执行两个检查,则可以执行以下操作:

bool done = false;
if (a) {
    ...
    if (b) {
        doSomething();
        done = true;
    }
}
if (!a && !done) {
    doSomethingElse();
}
但是,如果您的条件中的代码实际上包含调用函数doSomething和doSomethingElse,那么在嵌套的else分支中复制doSomethingElse函数的调用是无害的。

更改为:

if (a)
{
    if (b) {  
        doSomething();                            
    }
    else{
       doSomethingElse();
    }
}                      
else                  
    doSomethingElse(); 

你就不能这么做吗

if (a && b) {
    doSomething();
}
else {
    doSomethingElse();
}

您没有指定最初应该编辑您的帖子,而不是将其放在评论中。另外,为什么不能事先检查空对象?这并不总是一个有效的答案。在我的例子中,b是一个要求输入True或False的用户提示,只有在a为True时才应该调用它true@Mehdi在if语句中,如果第一个条件失败,那么第二个条件将永远不会得到计算。这适用于我使用过的所有语言,包括C语言。它被称为。依我看,这应该是正确的答案。如果你没有像OP那样在If a和ifb之间有代码,那么最好的答案是。调用它,如果第一个条件为false,则不会计算第二个条件。
if (a)
{
    if (b)    
        doSomething();                       
    else
        doeSomethingElse();
}                                             
else                                  
    doSomethingElse();