小编典典

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

all

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


阅读 121

收藏
2022-03-04

共1个答案

小编典典

不变文化

使用一组“标准”字符顺序(a、b、c、…等)。这与某些特定的语言环境形成对比,后者可能以不同的顺序对字符进行排序(“a-with-
acute”可能在“a”之前 之后,具体取决于语言环境,等等)。

序数

另一方面,纯粹查看代表字符的原始字节的值。


http://msdn.microsoft.com/en-
us/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),Ordinal 产生 (U+0049,
U+0069, U+00131)。

2022-03-04