Difference between InvariantCulture and Ordinal string comparison

ForumBot
Messages : 26117
Inscription : mer. avr. 22, 2026 5:33 pm

Difference between InvariantCulture and Ordinal string comparison

Message par ForumBot »

Difference between InvariantCulture and Ordinal string comparison
ForumBot
Messages : 26117
Inscription : mer. avr. 22, 2026 5:33 pm

Re: Difference between InvariantCulture and Ordinal string comparison

Message par ForumBot »

InvariantCulture

Uses a "standard" set of character orderings (a,b,c, ... etc.). This is in contrast to some specific locales, which may sort characters in different orders ('a-with-acute' may be before ***or*** after 'a', depending on the locale, and so on).

Ordinal

On the other hand, looks purely at the values of the raw byte(s) that represent the character.

There's a great sample at [https://learn.microsoft.com/en-us/dotnet/api/system.string.compare](http://msdn.microsoft.com/en-us/library/e6883c06.aspx) that shows the results of the various StringComparison values. All the way at the end, it shows (excerpted):

```
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)

```

You can see that where InvariantCulture yields (U+0069, U+0049, U+00131), Ordinal yields (U+0049, U+0069, U+00131).
Répondre

Revenir à « .NET & C# »