如果您对BCL方法的差异感到好奇,Reflector可能会很有帮助 :-)
我遵循以下准则:
完全匹配:编辑:我之前总是使用==运算符,因为在Equals(string, string)内部使用对象的==运算符来比较对象引用,但似乎strA.Equals(strB)总体上仍然比string.Equals(strA, strB)、strA == strB和string.CompareOrdinal(strA, strB)快1-11%,我使用了StopWatch在interned/non-interned字符串值上进行了循环测试,具有相同/不同的字符串长度和不同的大小(1B至5MB)。
strA.Equals(strB)
易于人类阅读的匹配(西方文化中不区分大小写):
string.Compare(strA, strB, StringComparison.OrdinalIgnoreCase) == 0
可读性强的匹配(所有其他文化,大小写不敏感/重音/假名等由CultureInfo定义):
string.Compare(strA, strB, myCultureInfo) == 0
可读性强的定制规则匹配(适用于所有其他文化):
CompareOptions compareOptions = CompareOptions.IgnoreCase
| CompareOptions.IgnoreWidth
| CompareOptions.IgnoreNonSpace;
string.Compare(strA, strB, CultureInfo.CurrentCulture, compareOptions) == 0