2012-11-27 121 views
2

有沒有推薦的方法檢查空,例如(根據.NET框架準則):檢查空,== NULL VS = NULL

if (value == null) 
{//code1} 
else 
{//code2} 

if (value != null) 
{//code2} 
else 
{//code1} 

或者這兩個代碼具有相同的性能?

回答

11

沒有性能上的差異,所以你應該努力提高可讀性。

例如,在if分支中放置更多「常規」路徑並將「特殊」路徑放入else分支中通常是一個好主意。

+2

「沒有性能差異,所以你應該爲可讀性編碼」---實際上,在第一個地方編寫可讀代碼總是一個好主意:-) – zerkms

+0

@zerkms,好這是一個很好的起點。但是,如果你的分析表面瓶頸,你有時不得不犧牲可讀性的祭壇。 –

+1

@Kirk Woll:是的,但只有在你寫完美妙的一段代碼之後。精心設計的代碼更容易改進(從性能角度來看) – zerkms

15

兩個選項的表現都相同。

您應該使用哪一個有意義的語義,或者更乾淨的代碼哪一個結果。
例如,如果非空的動作更短,這是有道理的,首先把該塊,使else接近if

+0

或者使用'value == null? code1:code2'如果你想!很多方法去皮貓 – Charleh

+0

@Charleh:請不要;-) – zerkms

+0

@zerkms,是因爲你鄙視'?'操作符?我認爲Charleh的建議沒有問題。 –

4

性能沒有差異。我個人把更常見的情況放在最上面,在else分支中不太常見的情況,但這只是偏好。這使我更容易看到更常見的情況。

2

沒有性能差異。根據您的需要使用它們(可讀性/可用性透視圖)。 最合適/使用的塊進入if,可選/輔助塊進入else

0

都是相同的。對於可讀性,你可以把在IF代碼給出結果爲真塊。在這種情況下,IF(value!= null)是更好的可讀性和明顯的:)