2012-08-05 134 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();