Classe SortVersion

Este artigo fornece observações complementares à documentação de referência para esta API.

Classificação e comparação de cadeias de caracteres no .NET Framework

Por meio do .NET Framework 4, cada versão do .NET Framework incluía tabelas que continham pesos de classificação e dados sobre normalização de cadeia de caracteres e que se baseiam em uma versão específica do Unicode. No .NET Framework 4.5 e versões posteriores, a presença dessas tabelas depende do sistema operacional:

  • No Windows 7 e em versões anteriores, as tabelas continuam a ser usadas para comparar e ordenar cadeias de caracteres.
  • No Windows 8, o .NET Framework delega operações de ordenação e comparação de cadeias de caracteres ao sistema operacional.

Consequentemente, o resultado de uma comparação de sequência de caracteres pode depender não apenas da versão do .NET Framework, mas também da versão do sistema operacional, como mostra a tabela a seguir. Observe que essa lista de versões com suporte do Unicode aplica-se somente à comparação e classificação de caracteres. ela não se aplica à classificação de caracteres Unicode por categoria.

Versão do .NET Framework Sistema operacional Versão Unicode
4 Todos os sistemas operacionais Unicode 5.0
4.5 e versões posteriores Windows 7 Unicode 5.0
4.5 e versões posteriores Windows 8 e versões posteriores Unicode 6.0

No Windows 8, já que a versão do Unicode usada na comparação e ordenação de cadeias de caracteres depende da versão do sistema operacional, os resultados da comparação de cadeia de caracteres podem diferir até mesmo para aplicativos executados em uma versão específica do .NET Framework.

Classificação e comparação de cadeias de caracteres no .NET Core

Todas as versões do .NET (Core) dependem do sistema operacional subjacente ao executar comparações de cadeia de caracteres. Portanto, os resultados de uma comparação de cadeia de caracteres ou a ordem em que as cadeias de caracteres são classificadas depende da versão do Unicode usada pelo sistema operacional ao executar a comparação. No Linux, macOS e Windows 10 e versões posteriores, as bibliotecas International Components for Unicode fornecem a implementação para APIs de comparação e classificação.

Usar a classe SortVersion

A classe SortVersion fornece informações sobre a versão do Unicode usada pelo .NET para comparação e ordenação de cadeias de caracteres. Ele permite que os desenvolvedores escrevam aplicativos que podem detectar e manipular com êxito as alterações na versão do Unicode usada para comparar e classificar as cadeias de caracteres de um aplicativo.

Você pode instanciar um objeto SortVersion de duas maneiras:

  • Chamando o construtor SortVersion, que instancia um novo objeto SortVersion com base em um número de versão e ID de classificação. Este construtor é mais útil ao recriar um objeto SortVersion a partir de dados salvos.
  • Recuperando o valor da propriedade CompareInfo.Version. Essa propriedade fornece informações sobre a versão do Unicode usada pela implementação do .NET na qual o aplicativo está sendo executado.

A classe SortVersion tem duas propriedades, FullVersion e SortId, que indicam a versão do Unicode e a cultura específica usada para comparação de cadeia de caracteres. A propriedade FullVersion é um valor numérico arbitrário que reflete a versão do Unicode usada para comparação de cadeia de caracteres, e a propriedade SortId é uma Guid arbitrária que reflete a cultura cujas convenções são usadas para comparação de cadeia de caracteres. Os valores dessas duas propriedades são importantes somente quando você compara dois objetos SortVersion usando o método Equals, o operador Equality ou o operador Inequality.

Normalmente, você usa um objeto SortVersion ao salvar ou recuperar alguma forma de dados de cadeia de caracteres ordenadas e sensíveis à cultura, como índices ou as cadeias de caracteres literais propriamente ditas. Isso exige as seguintes etapas:

  1. Quando os dados de cadeia de caracteres ordenados são salvos, os valores de propriedade FullVersion e SortId também são salvos.

  2. Quando os dados de cadeia de caracteres ordenados são recuperados, você pode recriar o objeto SortVersion usado para ordenar as cadeias de caracteres chamando o construtor SortVersion.

  3. Esse objeto recém-instanciado SortVersion é comparado com um objeto SortVersion que reflete a cultura cujas convenções são usadas para ordenar os dados da cadeia de caracteres.

  4. Se os dois objetos SortVersion não forem iguais, os dados da cadeia de caracteres precisarão ser reordenados.