0

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

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

我怎么做?

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

4

5 回答 5

4

唯一能做到这一点的方法是goto在可用的情况下使用单独的条件来保护else外部if语句的分支,而不是使其成为一个else分支。

假设在嵌套之前有计算if阻止您同时执行这两项检查,您可以这样做:

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

但是,如果您的条件中的代码实际上由调用函数doSomething和组成,那么在嵌套分支doSomethingElse中复制函数的调用并没有什么坏处。doSomethingElseelse

于 2012-08-05T11:42:47.200 回答
2

改为:

if (a)
{
    if (b) {  
        doSomething();                            
    }
    else{
       doSomethingElse();
    }
}                      
else                  
    doSomethingElse(); 
于 2012-08-05T11:43:27.907 回答
1
if(a && b)
  doSomething();
else
  doSomethingElse();
于 2012-08-05T11:42:43.020 回答
1
if (a)
{
    if (b)    
        doSomething();                       
    else
        doeSomethingElse();
}                                             
else                                  
    doSomethingElse(); 
于 2012-08-05T11:43:44.273 回答
0

你不能这样做吗?

if (a && b) {
    doSomething();
}
else {
    doSomethingElse();
}
于 2012-08-05T11:43:42.870 回答