將字符串與==
進行比較是否是一種好習慣?根據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. 是否可以將字符串與變量進行比較?
- 2. 將字符串與C++中的一組字符進行比較
- 3. 將sqlite與字符串進行比較
- 4. 將char與字符串進行比較
- 5. 將Arraylist與字符串進行比較
- 6. 是否有一個函數將字符串與較大的字符串進行比較?
- 7. 將字符串[index]與另一個字符串進行比較
- 8. 將一個字符與一組字符進行比較C++
- 9. 如何將BSTR與c/C++中的字符串進行比較?
- 10. 將一個字符與C++中的各種字符類進行比較
- 11. 無法將字符串與'/'字符進行比較
- 12. 將字符串與數組中的字符串進行比較
- 13. 將一組字符串與一個字符串進行比較的最快方法是什麼?
- 14. 將C中的Const Char與WCHAR字符串進行比較?
- 15. 將字符串與字符串數組進行比較
- 16. 將字符串網址與字符串值進行比較
- 17. 將字符串與其他字符串進行排序比較
- 18. 將數組字符串與字符串進行比較
- 19. 將字符串的字符與字典進行比較python
- 20. 是否可以將數字的字符串作爲數字進行比較?
- 21. 將字符串與另一個字符串進行比較的最佳方法是什麼?
- 22. 將字符串變量與一組字符串常量進行比較的最佳方法是什麼?
- 23. 是否有一些字符串比較不是逐字符?
- 24. 將字符串與字符串數組進行比較的問題C
- 25. 無法將NSString與Swift的靜態字符串進行比較
- 26. 將數組的字符與字符串進行比較
- 27. 將Solr用作數據庫是否是一種好的做法
- 28. 在JavaScript中使用===進行字符串比較是否合理?
- 29. 我無法將變量與SPservices中的字符串字符串進行比較
- 30. 與Extjs進行字符串比較
你想做什麼樣的比較? –
取決於你在比較什麼 - msdn是完美的http://msdn.microsoft.com/en-us/library/cc165449。aspx – JonH
這個頁面有一個很好的解釋:http://www.dotnetperls.com/string-equals – keyboardP