Поделиться через


Перечисление CompareOptions

В этой статье приводятся дополнительные замечания к справочной документации по этому API.

Параметры CompareOptions указывают чувствительность к регистру или необходимость игнорировать определённые типы символов.

.NET использует три различных способа сортировки: сортировку слов, сортировку строк и порядковый номер. Сортировка слов выполняет сравнение строк с учетом языковых и региональных параметров. Некоторые неалфавитно-цифровые символы могут иметь специальные веса, назначенные им. Например, дефис ("-") может иметь очень небольшой вес, назначенный ему, чтобы "coop" и "co-op" располагались рядом друг с другом в отсортированном списке. Сортировка строк аналогична сортировке слов, за исключением того, что нет особых случаев. Поэтому все не буквенно-цифровые символы идут перед всеми буквенно-цифровыми символами. Порядковая сортировка сравнивает строки на основе Юникодных значений каждого элемента строки. Скачиваемый набор текстовых файлов, содержащий сведения о весах символов, используемых в операциях сортировки и сравнения для операционных систем Windows, см. в разделе "Сортировка весовых таблиц". См. таблицу элементов сортировки Unicode по умолчанию для таблицы веса сортировки в Linux и macOS. Конкретная версия таблицы веса сортировки в Linux и macOS зависит от версии международных компонентов библиотек Юникода, установленных в системе. Сведения о версиях ICU и версиях Юникода, которые они реализуют, см. в разделе "Скачивание ICU".

Значение StringSort можно использовать только с CompareInfo.Compare и CompareInfo.GetSortKey. ArgumentException выбрасывается, если значение StringSort используется с CompareInfo.IsPrefix, CompareInfo.IsSuffix, CompareInfo.IndexOf или CompareInfo.LastIndexOf.

Замечание

По возможности следует использовать методы сравнения строк, которые принимают CompareOptions значение, чтобы указать ожидаемый тип сравнения. Как правило, сравнение, которое касается пользователя, лучше всего выполняется с помощью языковых и культурных параметров (используемых в текущей культуре), а сравнение безопасности должно включать Ordinal или OrdinalIgnoreCase.

Сортировки с учетом культурных особенностей

Замечание

.NET Core, работающий только на системах Linux и macOS: Поведение сортировки для культур C и Posix всегда учитывает регистр, так как эти культуры не используют ожидаемый порядок сортировки Юникода. Рекомендуется использовать культурные параметры, отличные от C или Posix, для выполнения операций сортировки, нечувствительных к регистру.