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


Класс SortVersion

Замечание

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

Сортировка и сравнение строк в .NET Framework

В .NET Framework 4 каждая версия .NET Framework включала таблицы, содержащие весы сортировки и данные по нормализации строк и основанные на определенной версии Юникода. В .NET Framework 4.5 и более поздних версиях наличие этих таблиц зависит от операционной системы:

  • В Windows 7 и предыдущих версиях таблицы продолжают использоваться для сравнения и упорядочивания строк.
  • В Windows 8 .NET Framework делегирует операции сравнения строк и упорядочивания в операционную систему.

Следовательно, результат сравнения строк может зависеть не только от версии .NET Framework, но и от версии операционной системы, как показано в следующей таблице. Обратите внимание, что этот список поддерживаемых версий Юникода применяется только к сравнению символов и сортировке; Он не применяется к классификации символов Юникода по категориям.

Версия платформы .NET Framework Операционная система Версия Юникода
4 Все операционные системы Юникод 5.0
Версии 4.5 и более поздние Windows 7 Юникод 5.0
Версии 4.5 и более поздние Windows 8 и более поздние версии Юникод 6.0

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

Сортировка и сравнение строк в .NET Core

Все версии .NET (Core) полагаются на базовую операционную систему при выполнении сравнения строк. Поэтому результаты сравнения строк или порядка сортировки строк зависят от версии Юникода, используемой операционной системой при выполнении сравнения. В Linux, macOS и Windows 10 и более поздних версиях международные компоненты для библиотек Юникода предоставляют реализацию для сравнения и сортировки API.

Использование класса SortVersion

Класс SortVersion содержит сведения о версии Юникода, используемой .NET для сравнения строк и упорядочивания. Это позволяет разработчикам создавать приложения, которые могут обнаруживать и успешно обрабатывать изменения в версии Юникода, которая используется для сравнения и сортировки строк приложения.

Создать экземпляр SortVersion объекта можно двумя способами:

  • При вызове конструктора SortVersion, который создает новый экземпляр объекта SortVersion на основе номера версии и идентификатора сортировки. Этот конструктор наиболее полезен при повторном SortVersion создании объекта из сохраненных данных.
  • Извлекая значение свойства CompareInfo.Version. Это свойство содержит сведения о версии Юникода, используемой реализацией .NET, в которой выполняется приложение.

Класс SortVersion имеет два свойства: FullVersion и SortId, которые указывают версию Юникода и конкретную культуру, используемые для сравнения строк. Свойство FullVersion является произвольным числовым значением, которое отражает версию Юникода, используемую для сравнения строк, а свойство SortId является произвольным значением Guid, которое отражает культуру, чьи культурные соглашения используются для сравнения строк. Значения этих двух свойств важны только при сравнении двух SortVersion объектов с помощью Equals метода, Equality оператора или Inequality оператора.

SortVersion Обычно вы используете объект, когда сохраняете или извлекаете чувствительные к культуре, упорядоченные строковые данные, такие как индексы или литеральные строки. Для этого необходимо выполнить следующие действия.

  1. Когда упорядоченные строковые данные сохраняются, значения свойств FullVersion и SortId также сохраняются.

  2. При извлечении упорядоченных строковых данных можно повторно создать SortVersion объект, используемый для упорядочивания строк, вызвав SortVersion конструктор.

  3. Этот новый экземпляр SortVersion объекта сравнивается с SortVersion объектом, который отражает культуру, чьи соглашения используются для упорядочивания строковых данных.

  4. Если два SortVersion объекта не равны, строковые данные должны быть переупорядочены.