考慮到評估時間,下面是兩個等價的?if/else vs ternary operator
if(condition1)
{
//code1
}
else
{
//code2
}
condition1 ? code1 : code2
或者他們只是語法上有什麼不同?
考慮到評估時間,下面是兩個等價的?if/else vs ternary operator
if(condition1)
{
//code1
}
else
{
//code2
}
condition1 ? code1 : code2
或者他們只是語法上有什麼不同?
不同之處在於後一個站可用於根據條件返回值。
舉例來說,如果你有如下語句:
if (SomeCondition())
{
text = "Yes";
}
else
{
text = "No";
}
使用三元運算符,你會寫:
text = SomeCondition() ? "Yes" : "No";
注意如何第一個例子執行基於一個聲明條件,而第二個根據條件返回值。
是&是的。
唯一的好處就是節省了代碼行。
嗯......在前一種情況下,您可以有任何數量或類型(表達式vs語句)的代碼代替code1
和code2
。在後一種情況下,它們必須是有效的表達。
是的,這些是兩種不同的語法形式,並且工作原理相同,最相似的代碼將由編譯器發出。
不是唯一的一個。第二個變體可以用於根據條件將引用綁定到兩個不同的對象,第一個不能用於此。 – sharptooth 2009-11-02 08:17:53
對,忘了。 – Faruz 2009-11-02 09:01:34