2013-01-14 58 views
-4

我已經看到3個語法爲 '如果' 條款:差異化的,如果

return (expression)? value1:value2; 

和:

return x.value?? string.Empty; 

和簡單的 '如果':

if (expression) 
    return value1; 
else 
    return value2; 

我的問題是「這些ifs之間的表現有什麼不同?」

+1

你爲什麼不自己評測一下,看看?你認爲這是你代碼中的瓶頸嗎?如果不是,那麼爲什麼這對你很重要? –

+2

@ downvoters請說明原因。 –

+0

我沒有downvoted,但我可以提供解釋。這可能是由於他們希望你自己寫基準。這很簡單 - 只需在每次操作前後檢查系統時間。事實上,我踢你一個檔次。只需一次downvote就足夠了,恕我直言,沒有意義推動人們失望。 –

回答

3

第一種方法是表達式,所以它可以打印或用於其他表達式。這種方法的性能與第三種方法中的簡單'if'相似。這使得它唯一不同的是,你可以把它作爲一個值:

//example, let say 'value1' and 'value2' are integer: 
printf("%d",(expression)? value1:value2); 

第二種方法是C#具體的,它主要用於INITIALISE變量的默認值:

//c# code: 
return x.value?? string.Empty; 

//is equivalent to: 
if (x.value==null) 
    return string.Empty; 
else 
    return x.value; 

第三方法是一個經典的方法,沒有什麼更多的澄清。所有這些方法編譯爲程序集時的代碼應該採用非常相似的程序集指令序列,因此性能是一樣的(一些基於C/C++的開發人員可能會說第一種方法是最快的,但這取決於) 。

請記住,您需要知道三者中每一個的特定功能以在需要時使用它,則此處的性能無關緊要。