<Elemento CompatSortNLSVersion>

Specifica che nel runtime devono essere utilizzati ordinamenti legacy quando si eseguono confronti di stringhe.

<Configurazione>
  <Runtime>
    <CompatSortNLSVersion>

Sintassi

<CompatSortNLSVersion
   enabled="4096"/>  

Attributi ed elementi

Nelle sezioni seguenti vengono descritti gli attributi, gli elementi figlio e gli elementi padre.

Attributi

Attributo Descrizione
enabled Attributo obbligatorio.

Specifica l'ID delle impostazioni locali di cui deve essere utilizzato l'ordinamento.

Attributo enabled

Valore Descrizione
4096 ID impostazioni locali mediante il quale viene rappresentato un ordinamento alternativo. In questo caso, 4096 rappresenta l'ordinamento di .NET Framework 3.5 e versioni precedenti.

Elementi figlio

Nessuno.

Elementi padre

Elemento Descrizione
configuration Elemento radice in ciascun file di configurazione usato in Common Language Runtime e nelle applicazioni .NET Framework.
runtime Contiene informazioni sulle opzioni di inizializzazione in fase di esecuzione.

Commenti

Poiché il confronto tra stringhe, l'ordinamento e le operazioni di maiuscole e minuscole eseguite dalla System.Globalization.CompareInfo classe in .NET Framework 4 sono conformi allo standard Unicode 5.1, i risultati dei metodi di confronto delle stringhe, ad esempio String.Compare(String, String) e String.LastIndexOf(String) possono essere diversi dalle versioni precedenti di .NET Framework. Se l'applicazione dipende dal comportamento legacy, è possibile ripristinare il confronto delle stringhe e le regole di ordinamento usate in .NET Framework 3.5 e versioni precedenti includendo l'elemento <CompatSortNLSVersion> nel file di configurazione dell'applicazione.

Importante

Per il ripristino del confronto di stringhe legacy e delle regole di ordinamento è necessaria inoltre la disponibilità della libreria di collegamento dinamico sort00001000.dll nel sistema locale.

È inoltre possibile utilizzare l'ordinamento delle stringhe legacy e le regole di confronto in un dominio dell'applicazione specifico passando la stringa "NetFx40_Legacy20SortingBehavior" al metodo SetCompatibilitySwitches quando si crea il dominio dell'applicazione.

Esempio

Nell'esempio seguente viene creata un'istanza di due oggetti String e viene chiamato il metodo String.Compare(String, String, StringComparison) per confrontarle utilizzando le convenzioni delle impostazioni cultura correnti.

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 si esegue l'esempio in .NET Framework 4, viene visualizzato l'output seguente:

sta follows a in the sort order.  

Questa operazione è completamente diversa dall'output visualizzato quando si esegue l'esempio in .NET Framework 3.5:

sta equals a in the sort order.  

Tuttavia, se si aggiunge il file di configurazione seguente alla directory dell'esempio ed eseguire l'esempio in .NET Framework 4, l'output è identico a quello prodotto dall'esempio quando viene eseguito in .NET Framework 3.5.

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

Vedi anche