2012-08-05 123 views
-2

我无法与这片:如何让内部if语句到外部if语句的`else`?

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

我该怎么办呢?

UPD: if语句嵌套因为a检查的对象不为空,防止因对空对象的参数立即检查异常。

回答

2

做短期使用goto如果有的话就是守护外if声明else分支有独立的条件,而不是使之成为一个else分支的唯一途径。

假设有前面的嵌套if使您无法同时执行两个检查计算,你可以这样做:

bool done = false; 
if (a) { 
    ... 
    if (b) { 
     doSomething(); 
     done = true; 
    } 
} 
if (!a && !done) { 
    doSomethingElse(); 
} 

但是,如果你的条件代码字面上包含通话功能doSomethingdoSomethingElse,在嵌套的else分支内复制对doSomethingElse函数的调用没有任何坏处。

0
if(a && b) 
    doSomething(); 
else 
    doSomethingElse(); 
+0

也许它添加到接下来的问题。你可以编辑它们。 – Femaref 2012-08-05 11:44:15

+0

这并不总是一个有效的答案。在我的情况下,b是一个用户提示,要求输入True或False,只有在a为真时才应该调用它。 – Mehdi 2017-04-25 07:25:48

2

改成这样:

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

你就不能这样做呢?

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

您最初没有指定(您应该编辑您的帖子,而不是将它放入注释中)。另外,为什么不能事先检查空对象? – 2012-08-05 11:45:37

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