我想檢查一個變量字符串data
是否包含空字符串。哪個更有效率,「data.Length == 0」還是「data == string.Empty」?
哪一種更有效?data.Length==0
或data==string.Empty
?
我忘了說,data
已被檢查,它是保證不是null
。
我想檢查一個變量字符串data
是否包含空字符串。哪個更有效率,「data.Length == 0」還是「data == string.Empty」?
哪一種更有效?data.Length==0
或data==string.Empty
?
我忘了說,data
已被檢查,它是保證不是null
。
使用String.IsNullOrEmpty(data)
而
使用String.IsNullOrEmpty()
檢查。
我會選擇第三個,它是不太容易出現的錯誤:
String.IsNullOrEmpty(data)
我要說的是,你應該使用String.isNullOrEmpty method檢查空爲好。
既不檢查將是你的瓶頸。但是,如果您選擇第一個,那麼如果字符串爲空,則可以運行NullReferenceException
。第二個你不會有這個問題。
從邏輯上講,data.Length == 0
更有效,因爲它是簡單地比較兩個整數值,而data == String.Empty
是比較字符串(雖然很短的)。
但是,編譯器或框架可能會進行一些優化,以最大限度地減少或消除任何差異。這使得在沒有運行自己的時間測試的情況下很難做出絕對的聲明。
最後,我懷疑這種差異是否足以引起注意。
最佳做法是使用String.IsNullOrEmpty
(或者,如果它符合您的要求,則使用.Net 4.0 - String.IsNullOrWhiteSpace
)。
如果您致電s.Length
,那麼如果字符串爲null
,則將獲得NullReferenceException
。這意味着您需要檢查if(s == null || s.Length == 0)
。這將是最有效的,也可能是最快的,但你也可以使用String.IsNullOrEmpty
。
s == string.Empty
如果字符串爲null
(null
與空字符串不相同)將返回false。
在性能方面,請不要再花時間思考它。它幾乎不會永遠永不影響性能。
正如人們所提到的,使用.NET 4.0框架中引入的string.IsNullOrEmpty(str)
或string.IsNullOrWhiteSpace(str)
。
你爲什麼在意? – BoltClock
更多關於算法的複雜性... –
只是沒關係。如果有的話,這個區別永遠不會被識別。 –