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


Класс System.StringComparer

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

Объект, производный от StringComparer класса, воплощает строковое сравнение, равенство и хэш-кодовые операции, которые учитывают как регистр, так и правила сравнения, зависящие от языка и региональных параметров. Вы можете использовать класс StringComparer для создания сравнения, специфичного для типа, чтобы отсортировать элементы в универсальной коллекции. Такие классы, как Hashtable, Dictionary<TKey,TValue>SortedListи SortedList<TKey,TValue> используют StringComparer класс для сортировки.

Операция сравнения, представляемая классом StringComparer, может быть определена как чувствительная к регистру или нечувствительная к регистру и использовать правила сравнения, учитывающие язык и региональные настройки (сравнение слов), или не учитывающие их (лексикографическое сравнение). Дополнительные сведения о правилах сравнения слов и порядкового номера см. в разделе System.Globalization.CompareOptions.

Замечание

Вы можете скачать таблицу элементов коллации Юникода по умолчанию, последнюю версию таблицы весов сортировки. Конкретная версия таблицы веса сортировки зависит от версии международных компонентов библиотек Юникода, установленных в системе. Сведения о версиях ICU и версиях Юникода, которые они реализуют, см. в разделе "Скачивание ICU".

Для .NET Framework в Windows можно скачать набор текстовых файлов, содержащих сведения о весах символов, используемых в операциях сортировки и сравнения.

Реализованные свойства

Возможно, вы запутались в том, как использовать StringComparer свойства класса из-за кажущегося противоречия. Класс StringComparer объявлен abstract (MustInherit в Visual Basic), что означает, что его члены могут вызываться только для объекта класса, производного от StringComparer класса. Противоречие заключается в том, что каждое свойство StringComparer класса объявляется static (Shared в Visual Basic), что означает, что свойство может вызываться без первого создания производного класса.

Можно вызвать свойство напрямую StringComparer , так как каждое свойство фактически возвращает экземпляр анонимного класса, производного от StringComparer класса. Следовательно, тип каждого значения свойства — StringComparerэто базовый класс анонимного класса, а не тип самого анонимного класса. Каждое свойство класса StringComparer возвращает объект, поддерживающий предопределенные правила регистра и сравнения.