0

私はこの作品に問題があります:

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

それ、どうやったら出来るの?

UPD: if ステートメントはネストされているためa、オブジェクトが null でないかどうかをチェックし、null オブジェクトのパラメーターをすぐにチェックすることによって引き起こされる例外を防ぎます。

4

5 に答える 5

4

使用可能な場合に使用する以外にそれを行う唯一の方法は、外側のステートメントの分岐を分岐にするのではなく、別の条件でgoto保護することです。elseifelse

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 に答える