在c#中比较两个字符串是否相等时,InvariantCulture和Ordinal比较之间有什么区别?
使用一组“标准”字符顺序(a,b,c等)。这与某些特定的语言环境相反,后者可能以不同的顺序对字符进行排序(“ a-with-acute”可能在“ a” 之前 或 之后,具体取决于语言环境,依此类推)。
另一方面,仅查看代表字符的原始字节的值。
http://msdn.microsoft.com/zh- cn/library/e6883c06.aspx上有一个很好的示例,它显示了各种StringComparison值的结果。一直到最后,它显示(摘录):
StringComparison.InvariantCulture: LATIN SMALL LETTER I (U+0069) is less than LATIN SMALL LETTER DOTLESS I (U+0131) LATIN SMALL LETTER I (U+0069) is less than LATIN CAPITAL LETTER I (U+0049) LATIN SMALL LETTER DOTLESS I (U+0131) is greater than LATIN CAPITAL LETTER I (U+0049) StringComparison.Ordinal: LATIN SMALL LETTER I (U+0069) is less than LATIN SMALL LETTER DOTLESS I (U+0131) LATIN SMALL LETTER I (U+0069) is greater than LATIN CAPITAL LETTER I (U+0049) LATIN SMALL LETTER DOTLESS I (U+0131) is greater than LATIN CAPITAL LETTER I (U+0049)
您可以看到其中InvariantCulture产生(U + 0069,U + 0049,U + 00131),序数产生(U + 0049,U + 0069,U + 00131)。