將字符串與==
進行比較是否是一種好習慣?根據Compare
和Equals
方法string
是否有相當於s1 == s2
。如果使用這些方法,而不指定CultureInfo
FxCop會發出警告,這是一個真正的問題嗎?將C#字符串與'=='進行比較是否是一種好的做法?
回答
==
運算符是序數,文化不知道的字符串比較。它使用與.Equals
相同的內部調用,並且對於「常用」字符串比較來說很好。
如果您需要文化感知comparings(如圖形界面的目的),如德國雙S或SS,使用
CultureInfo ci = new CultureInfo("de-DE");
String.Compare("Strasse", "Straße", true, ci)
是的,這種做法很好。您也可以使用String.Compare,並在Best Pratices for Using Strings in the .NET Framework中找到最佳比較結果。
是的,FxCop會發出警告,但警告是警告。如果你不關心文化,可以忽略它們。但是,像現實生活中的警告一樣,它有時候值得聽取他們的意見。
當你比較字符串,你應該使用顯式地指定什麼樣的方法您打算執行的比較。這使您的代碼更易於維護和閱讀。在可能的情況下,使用帶有StringComparison枚舉參數的System.String和System.Array類的方法的重載,以便可以指定要執行的比較類型。比較字符串時最好避免使用==和!=運算符。另外,避免使用String.CompareTo實例方法,因爲沒有重載需要StringComparison。
根據您的需求,您可以在下一方法使用:
bool result = root.Equals(root2, StringComparison.Ordinal);
result = root.Equals(root2, StringComparison.OrdinalIgnoreCase);
bool areEqual = String.Equals(root, root2, StringComparison.Ordinal);
來源爲這樣的回答:http://msdn.microsoft.com/en-us/library/cc165449.aspx
有extensivedocumentation MSDN上談到有關序和文化敏感字符串比較。 序數比較不關心語言學,並在默認情況下,將涉及案件。 文化敏感比較確實關心語言學(案例,puncutation等)。
dotnetperls上的這個article深入瞭解性能影響,甚至顯示了兩種字符串比較方法(==
和equals
)的IL和基準。
最後,這question表明==
是嚴格意義上的序字符串比較,不適合用於本地化字符串。
如果一個字符串可能爲null或空(又名「」),你想使用string.IsNullOrEmpty(...);
否則在我的書或大多數東西罰款。取決於你在做什麼。
- 1. 將char與字符串進行比較
- 2. 將Arraylist與字符串進行比較
- 3. 將一個字符與一組字符進行比較C++
- 4. 如何將BSTR與c/C++中的字符串進行比較?
- 5. 將一個字符與C++中的各種字符類進行比較
- 6. 將字符串與數組中的字符串進行比較
- 7. 將字符串網址與字符串值進行比較
- 8. 將字符串與其他字符串進行排序比較
- 9. 將數組字符串與字符串進行比較
- 10. 將字符串的字符與字典進行比較python
- 11. 是否可以將數字的字符串作爲數字進行比較?
- 12. 將字符串變量與一組字符串常量進行比較的最佳方法是什麼?
- 13. 將字符串與字符串數組進行比較的問題C
- 14. 我無法將變量與SPservices中的字符串字符串進行比較
- 15. 與Extjs進行字符串比較
- 16. 與其他字符串進行比較
- 17. 在JavaScript中使用===進行字符串比較是否合理?
- 18. 什麼是進行字符串比較最有效的方法?
- 19. 無法將字符串與數組進行比較
- 20. Python - 將字符串與Unicode替換字符進行比較
- 21. 將字符串與字符列表進行比較
- 22. 將字符串與非英文字符進行比較?
- 23. 將一個字符與一系列字符進行比較
- 24. Python:如何將input()字符串與另一個字符串進行比較?
- 25. 是否可以將一個MySQL TIMESTAMP與毫秒進行比較?
- 26. 將字符文字與C++中的Std :: String進行比較
- 27. 我無法將數據框與字符串進行比較!但是,我可以比較其轉
- 28. iPhone - 將字符串與德語變音符號進行比較
- 29. 什麼是比較字符串的更好方法?
- 30. 通過字符串與字符串列表進行比較
你想做什麼樣的比較? –
取決於你在比較什麼 - msdn是完美的http://msdn.microsoft.com/en-us/library/cc165449。aspx – JonH
這個頁面有一個很好的解釋:http://www.dotnetperls.com/string-equals – keyboardP