5

考慮到評估時間,下面是兩個等價的?if/else vs ternary operator

if(condition1) 
{ 
    //code1 
} 
else 
{ 
    //code2 
} 

condition1 ? code1 : code2

或者他們只是語法上有什麼不同?

回答

11

不同之處在於後一個站可用於根據條件返回值

舉例來說,如果你有如下語句:

if (SomeCondition()) 
{ 
    text = "Yes"; 
} 
else 
{ 
    text = "No"; 
} 

使用三元運算符,你會寫:

text = SomeCondition() ? "Yes" : "No"; 

注意如何第一個例子執行基於一個聲明條件,而第二個根據條件返回值

3

是&是的。

唯一的好處就是節省了代碼行。

+8

不是唯一的一個。第二個變體可以用於根據條件將引用綁定到兩個不同的對象,第一個不能用於此。 – sharptooth 2009-11-02 08:17:53

+0

對,忘了。 – Faruz 2009-11-02 09:01:34

4

嗯......在前一種情況下,您可以有任何數量或類型(表達式vs語句)的代碼代替code1code2。在後一種情況下,它們必須是有效的表達。

1

是的,這些是兩種不同的語法形式,並且工作原理相同,最相似的代碼將由編譯器發出。