簡體   English   中英

為什么建議檢查字符串長度以確定空虛?

[英]Why is it recommended to check string length to determine emptiness?

通常,人們說最好說s.Length == 0而不是s == "" 但似乎這將是一種微觀優化,也使得閱讀更難。 此外,前者相對於后者的一千萬,最多可節省60毫秒。

有沒有理由讓我失蹤,比如s.Length == 0實際上更好地表達了意圖? 或者需要比較許多字符串是否空洞?

編輯:我知道IsNullOrEmpty,但是當人們回答這個問題時,他們經常提到長度檢查比空字符串更好。

編輯2:沒有詢問這兩個案例的最佳方法是IsNullOrEmpty,但我問為什么不可忽視的少數人堅持認為長度檢查更優越。 我假設他們有充分的理由說出來,並想知道它們是什么。

編輯3:如開頭所述,我知道一個比另一個快。 問題是,人們推薦它的原因是什么? 一些時間表明這並沒有導致顯着差異。

你是對的,它本質上是一種微觀優化。 測試長度確實使FxCop / Code Analysis保持安靜 - 理由是性能,如MSDN中所述

至於哪個更具可讀性,那是主觀的,我相信任何開發人員都會理解。 由於它們在語義上是不同的(如果s為null,則s.Length == 0拋出,而s == ""則不拋出),可讀性不是唯一要考慮的標准。

如果您不確定字符串是否為null,則String.IsNullOrEmptyString.IsNullOrWhiteSpace可能更具可讀性(即表達您的意圖)。

原因是做s == ""你正在進行字符串比較,這比其他方式慢( s.Length == 0

在我的大多數代碼中,使用string.IsNullOrEmpty()string.IsNullOrWhiteSpace() (在.NET 4中)更容易閱讀,更具體地說,我需要做的事情。

s == string.Empty是s.length == 0的替代。

我不推薦為什么s ==“”的猜測是“”會在堆上創建一個不可變的字符串。 僅作比較,您可能不想創建字符串對象。 無論如何有人可以驗證我的聲明。

字符串值比較比數值比較慢。

我會在你的情況下使用String.IsNullOrEmpty

並非所有的dot net字符串都在運行時被中斷,這意味着s.Length == 0在這些情況下會更快,因為它避免了實際的字符串比較,如果兩個字符串中的一個沒有被中斷,則會導致MSDN上的String.IsInterned()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM