Compartilhar via


<CompatSortNLSVersion> Element

Especifica que o runtime deve usar as ordens de classificação herdadas ao executar comparações de cadeias de caracteres.

<configuration>
  <runtime>
    <CompatSortNLSVersion>

Syntax

<CompatSortNLSVersion
   enabled="4096"/>  

Atributos e elementos

As seções a seguir descrevem atributos, elementos filho e elementos pai.

Atributos

Atributo Descrição
enabled Atributo obrigatório.

Especifica a ID de localidade cuja ordem de classificação deve ser usada.

Atributo habilitado

Valor Descrição
4096 A ID de localidade que representa uma ordem de classificação alternativa. Nesse caso, 4096 representa a ordem de classificação do .NET Framework 3,5 e versões anteriores.

Elementos filho

Nenhum.

Elementos pai

Elemento Descrição
configuration O elemento raiz em cada arquivo de configuração usado pelos aplicativos do Common Language Runtime e .NET Framework.
runtime Contém informações sobre opções de inicialização do runtime.

Comentários

Como as operações de comparação de cadeia de caracteres, classificação e maiúsculas e minúsculas executadas pela classe System.Globalization.CompareInfo no .NET Framework 4 estão em conformidade com o padrão Unicode 5.1, os resultados de métodos de comparação de cadeia de caracteres como String.Compare(String, String) e String.LastIndexOf(String) podem ser diferentes das versões anteriores do .NET Framework. Se seu aplicativo depender de comportamento herdado, você poderá restaurar as regras de classificação e comparação de cadeia de caracteres usadas no .NET Framework 3.5 e em versões anteriores ao incluir o elemento <CompatSortNLSVersion> no arquivo de configuração do seu aplicativo.

Importante

Restaurar a comparação e as regras de classificação de cadeia de caracteres herdadas também requer que a biblioteca de vínculo dinâmico do arquivo sort00001000.dll esteja disponível no sistema local.

Você também pode usar regras de classificação e comparação herdadas em um domínio de aplicativo específico ao passar a cadeia de caracteres "NetFx40_Legacy20SortingBehavior" ao método SetCompatibilitySwitches quando o domínio do aplicativo é criado.

Exemplo

O exemplo a seguir cria uma instância de dois objetos String e chama o método String.Compare(String, String, StringComparison) para compará-los ao usar as convenções da cultura atual.

using System;

enum StringComparisonResult
{
    precedes = -1,
    equals = 0,
    follows = 1,
};

public class Example
{
   public static void Main()
   {
      string str1 = new string( new char[] {'\u0219', '\u021B', 'a' });
      string str2 = "a";

      Console.WriteLine("{0} {1} {2} in the sort order.",
                        str1,
                        (StringComparisonResult) String.Compare(str1, str2, StringComparison.CurrentCulture),
                        str2);
   }
}
Enum StringComparisonResult As Integer
    precedes = -1
    equals = 0
    follows = 1
End Enum

Module Example
    Public Sub Main()
        Dim str1 As String = ChrW(&h219) + ChrW(&h21B) + "a"
        Dim str2 As String = "a"

        Console.WriteLine("{0} {1} {2} in the sort order.", _
                          str1, _
                          CType(String.Compare(str1, str2, StringComparison.CurrentCulture), StringComparisonResult), _
                          str2)
    End Sub
End Module

Quando você executa o exemplo no .NET Framework 4, ele exibe a seguinte saída:

sta follows a in the sort order.  

Isso é completamente diferente da saída que é exibida quando você executa o exemplo no .NET Framework 3.5:

sta equals a in the sort order.  

No entanto, se você adicionar o arquivo de configuração a seguir ao diretório do exemplo e executar o exemplo no .NET Framework 4, a saída será idêntica à produzida pelo exemplo quando ele é executado no .NET Framework 3.5.

<?xml version ="1.0"?>  
<configuration>  
   <runtime>  
      <CompatSortNLSVersion enabled="4096"/>  
   </runtime>  
</configuration>  

Confira também