如果您对BCL方法的差异感到好奇,那么Reflector是您的朋友:-)
我遵循以下准则:
完全匹配: 编辑:我以前总是使用==运算符,其原则是在Equals(string,string)内部,对象==运算符用于比较对象引用,但看起来strA.Equals(strB)仍为1-11%总体上比string.Equals(strA,strB),strA == strB和string.CompareOrdinal(strA,strB)更快。我使用秒表对已插入/未插入的字符串值(具有相同/不同的字符串长度和大小)(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