2012-01-05 26 views
4

哪種方法確實是檢查空字符串的最快方法,並且有任何特定情況需要特定的情況。String.Empty,null,Length或String.IsEmptyOrNull?

1. String.IsNullOrEmpty() 

2. str == null 

3. str == null || str == String.Empty 

4. str == null || str == "" 

5. str == null || str.length == 0 
+6

第一個是正確的方法。因爲它的字符串是inbuit。 – 2012-01-05 12:03:43

+3

'str'不是一個好的變量名稱 – Kane 2012-01-05 12:08:56

+0

在這些例子中的大多數沒有區別。例如測試以查看長度是否爲0,則檢查它是否爲空字符串。在一個例子中,檢查它的null是否有點愚蠢,因爲一個字符串的默認值是一個空字符串,而不是一個空字符串。我們正在談論性能差異,你甚至不會開始測量,因爲它們可以忽略不計。停止嘗試優化簡單的任務。 – 2012-01-05 12:20:17

回答

18

使用選項1.

如果你特別要檢查null或空字符串,那麼就沒有理由使用其他任何比string.IsNullOrEmpty。這是在.NET中這樣做的規範方式,任何性能差異幾乎都可以忽略不計。

這是premature optimization的教科書示例;盡一切辦法,寫有效的代碼,但不要浪費開發時間,因爲沒有正當的性能收益。請記住,你作爲開發人員的時間一般是遠遠比CPU的時間更有價值。

答曰高德納:

我們應該忘記小的效率,說約97%的時間:過早的優化是所有罪惡的根源。

如果這個級別的微優化對於您的應用程序是真正必需的,那麼您可能不應該使用.NET。

+0

對於您提供的關於過早優化的鏈接+1。所以真的... – ken2k 2012-01-05 12:37:18

0

我個人一直使用String.IsNullOrEmpty()。我並不認爲他們做了什麼特別的事情,除了檢查它是否是null或空的,所以它不應該比手寫檢查慢。

此外,有時您可能會匆忙,並意外地把null檢查結束,得到一個令人討厭的驚喜。 :)

2

速度的差異將是不可知的。

正確的做法是1,因爲它是最安全和最可讀的。

1

String.IsNullOrEmpty()非常易讀,並且按預期工作/工作,很樂意堅持這一點。

你真的有一個邊緣情況下,它的短缺,然後請添加相同的問題,這將使其更相關。

1

使用

String.IsNullOrEmpty() 

是基於.NET的最佳途徑。

0

它更好的方式和recomended使用String.IsNullOrEmpty爲最迅速檢查null或空字符串。因爲它在String中的內置方法。

-1

在您的示例中,解決方案2是最快的。但它是一種與其他方法不同的解決方案,因爲它不檢查字符串是否爲空。

否則,考慮到您要檢查字符串是空還是空,解決方案5是最快的。 String.IsNullOrEmpty()與解決方案5完全相同,但添加了一個函數調用(如果它在運行時未內聯)。不過,我會推薦第一個解決方案:

1 /性能損失是可以忽略不計

2 /它更容易閱讀

3 /它是一個內置的方法,所以它是面向未來的

+0

我必須downvote這個答案,因爲字符串變量的默認值是一個空字符串不是空字符串。儘管你所說的一切** String.IsNullOrEmpty **都是正確的。 – 2012-01-05 12:25:38

+0

我不明白你的觀點。我在哪裏談論字符串的默認值? – 2012-01-05 12:30:13

+0

我提到了這一點。對於您的聲明來說,這是一個否定的結果,因爲它實際上看起來並不符合作者實際想要測試的內容,因爲解決方案2的用途有限。 – 2012-01-05 13:33:53

相關問題