一尘不染

InvariantCulture和序数字符串比较之间的区别

c#

在c#中比较两个字符串是否相等时,InvariantCulture和Ordinal比较之间有什么区别?


阅读 219

收藏
2020-05-19

共1个答案

一尘不染

不变文化

使用一组“标准”字符顺序(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)。

2020-05-19