Partilhar via


<Elemento CompatsortnlSVersion>

Especifica que o runtime deve utilizar as sequências de ordenação legadas ao efetuar comparações de cadeias.

<configuração>
  <runtime>
    <CompatSortnlSVersion>

Syntax

<CompatSortNLSVersion
   enabled="4096"/>  

Atributos e Elementos

As secções seguintes descrevem atributos, elementos subordinados e elementos principais.

Atributos

Atributo Descrição
enabled Atributo obrigatório.

Especifica o ID de região cuja sequência de ordenação deve ser utilizada.

Atributo ativado

Valor Descrição
4096 O ID de região que representa uma sequência de ordenação alternativa. Neste caso, o 4096 representa a sequência de ordenação do .NET Framework 3.5 e versões anteriores.

Elementos Subordinados

Nenhum.

Elementos Principais

Elemento Descrição
configuration O elemento raiz em cada ficheiro de configuração utilizado pelo runtime de linguagem comum e .NET Framework aplicações.
runtime Contém informações sobre as opções de inicialização do runtime.

Observações

Uma vez que as operações de comparação, ordenação e ordenação de cadeias realizadas pela System.Globalization.CompareInfo classe no .NET Framework 4 estão em conformidade com a norma Unicode 5.1, os resultados de métodos de comparação de cadeias, como String.Compare(String, String) e String.LastIndexOf(String) podem diferir das versões anteriores do .NET Framework. Se a sua aplicação depender do comportamento legado, pode restaurar as regras de comparação e ordenação de cadeias utilizadas no .NET Framework 3.5 e versões anteriores ao incluir o <CompatSortNLSVersion> elemento no ficheiro de configuração da sua aplicação.

Importante

Restaurar regras de ordenação e comparação de cadeias legadas também requer que a biblioteca de ligações dinâmica sort00001000.dll esteja disponível no sistema local.

Também pode utilizar regras de ordenação e comparação de cadeias legadas num domínio de aplicação específico ao transmitir a cadeia "NetFx40_Legacy20SortingBehavior" para o SetCompatibilitySwitches método quando cria o domínio da aplicação.

Exemplo

O exemplo seguinte instancia dois String objetos e chama o String.Compare(String, String, StringComparison) método para compará-los com 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 executa o exemplo no .NET Framework 4, este apresenta o seguinte resultado:

sta follows a in the sort order.  

Isto é completamente diferente do resultado apresentado quando executa o exemplo no .NET Framework 3.5:

sta equals a in the sort order.  

No entanto, se adicionar o seguinte ficheiro de configuração ao diretório do exemplo e, em seguida, executar o exemplo no .NET Framework 4, o resultado é idêntico ao produzido pelo exemplo quando é executado no .NET Framework 3.5.

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

Ver também