Карточка Middle Строки обновлено

Ordinal и культурное сравнение строк

Вопрос

Чем StringComparison.Ordinal отличается от CurrentCulture?

Попробуйте сами

Ответьте про себя или вслух, потом откройте ответ и сверьтесь.

Показать ответ и разбор

Коротко

Ordinal: побайтовое сравнение кодов char, быстро и предсказуемо. Для идентификаторов, путей, ключей, протоколов.

Ответ

Ordinal: побайтовое сравнение кодов char, быстро и предсказуемо. Для идентификаторов, путей, ключей, протоколов. CurrentCulture / InvariantCulture: лингвистическое сравнение по правилам языка (ё и е, лигатуры, порядок букв). Для сортировки текста, который видит пользователь. IgnoreCase-варианты есть у обоих.

Разбор

Начиная с .NET 5 на всех ОС культурное сравнение идёт через ICU, поэтому некоторые старые сравнения дали другие результаты. Это ещё один довод за явный StringComparison.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.