Dela via


<CompatSortNLSVersion-element>

Anger att körningen ska använda äldre sorteringsordningar när strängjämförelser utförs.

<Konfiguration>
  <Runtime>
    <CompatSortNLSVersion>

Syntax

<CompatSortNLSVersion
   enabled="4096"/>  

Attribut och element

I följande avsnitt beskrivs attribut, underordnade element och överordnade element.

Attribut

Attribut Beskrivning
enabled Obligatoriskt attribut.

Anger det språkvariant-ID vars sorteringsordning ska användas.

aktiverat attribut

Värde Beskrivning
4096 Språkvariant-ID:t som representerar en alternativ sorteringsordning. I det här fallet representerar 4096 sorteringsordningen för .NET Framework 3.5 och tidigare versioner.

Underordnade element

Inga.

Överordnade element

Element Beskrivning
configuration Rotelementet i varje konfigurationsfil som används av common language runtime och .NET Framework program.
runtime Innehåller information om initieringsalternativ för körning.

Kommentarer

Eftersom strängjämförelse, sortering och höljesåtgärder som utförs av System.Globalization.CompareInfo klassen i .NET Framework 4 överensstämmer med Unicode 5.1-standarden kan resultatet av strängjämförelsemetoder som String.Compare(String, String) och String.LastIndexOf(String) kan skilja sig från tidigare versioner av .NET Framework. Om ditt program är beroende av äldre beteende kan du återställa strängjämförelse- och sorteringsreglerna som används i .NET Framework 3.5 och tidigare versioner genom att inkludera elementet <CompatSortNLSVersion> i programmets konfigurationsfil.

Viktigt

Återställning av äldre strängjämförelse och sorteringsregler kräver också att det sort00001000.dll dynamiska länkbiblioteket är tillgängligt i det lokala systemet.

Du kan också använda äldre strängsorterings- och jämförelseregler i en specifik programdomän genom att skicka strängen "NetFx40_Legacy20SortingBehavior" till SetCompatibilitySwitches metoden när du skapar programdomänen.

Exempel

I följande exempel instansieras två String objekt och metoden anropas String.Compare(String, String, StringComparison) för att jämföra dem med hjälp av den aktuella kulturens konventioner.

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

När du kör exemplet på .NET Framework 4 visas följande utdata:

sta follows a in the sort order.  

Detta skiljer sig helt från de utdata som visas när du kör exemplet på .NET Framework 3.5:

sta equals a in the sort order.  

Men om du lägger till följande konfigurationsfil i exemplets katalog och sedan kör exemplet på .NET Framework 4 är utdata identiska med dem som genereras av exemplet när det körs på .NET Framework 3.5.

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

Se även