<Элемент CompatSortNLSVersion>

Указывает, что при операциях сравнения строк среда выполнения должна использовать устаревший порядок сортировки.

<Конфигурации>
  <Среды выполнения>
    <CompatSortNLSVersion>

Синтаксис

<CompatSortNLSVersion
   enabled="4096"/>  

Атрибуты и элементы

В следующих разделах описаны атрибуты, дочерние и родительские элементы.

Атрибуты

Атрибут Описание
enabled Обязательный атрибут.

Указывает код языка, порядок сортировки которого должен использоваться.

Атрибут enabled

Значение Описание
4096 Код языка, представляющий альтернативный порядок сортировки. В этом случае 4096 представляет порядок сортировки платформа .NET Framework 3.5 и более ранних версий.

Дочерние элементы

Отсутствует.

Родительские элементы

Элемент Описание
configuration Корневой элемент в любом файле конфигурации, используемом средой CLR и приложениями .NET Framework.
runtime Содержит сведения о параметрах инициализации среды выполнения.

Комментарии

Поскольку операции сравнения строк, сортировки и регистра, выполняемые классом System.Globalization.CompareInfo в платформа .NET Framework 4, соответствуют стандарту Юникода 5.1, результаты методов сравнения строк, таких как String.Compare(String, String) и , String.LastIndexOf(String) могут отличаться от предыдущих версий платформа .NET Framework. Если приложение зависит от устаревшего поведения, можно восстановить правила сравнения строк и сортировки, используемые в платформа .NET Framework 3.5 и более ранних версиях, включив <CompatSortNLSVersion> элемент в файл конфигурации приложения.

Важно!

Для восстановления устаревших правил сравнения и сортировки строк также требуется, чтобы в локальной системе была доступна библиотека динамической компоновки sort00001000.dll.

Устаревшие правила сортировки и сравнения строк можно также использовать в конкретном домене приложения, передав при создании этого домена строку "NetFx40_Legacy20SortingBehavior" в метод SetCompatibilitySwitches.

Пример

В следующем примере создаются экземпляры двух объектов String и вызывается метод String.Compare(String, String, StringComparison), чтобы сравнить их с использованием соглашений текущих языка и региональных параметров.

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

При выполнении примера на платформа .NET Framework 4 отображаются следующие выходные данные:

sta follows a in the sort order.  

Это полностью отличается от выходных данных, отображаемых при выполнении примера на платформа .NET Framework 3.5:

sta equals a in the sort order.  

Однако если добавить следующий файл конфигурации в каталог примера, а затем запустить пример на платформа .NET Framework 4, выходные данные будут идентичны выходным данным, созданным в примере при его запуске в платформа .NET Framework 3.5.

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

См. также раздел