<CompatSortNLSVersion> 元素

指定在执行字符串比较时,运行时应使用旧排序顺序。

configuration
  runtime
    <CompatSortNLSVersion>

语法

<CompatSortNLSVersion
   enabled="4096"/>  

特性和元素

下列各节描述了特性、子元素和父元素。

特性

属性 描述
enabled 必需的特性。

指定要使用其排序顺序的区域设置 ID。

enabled 特性

说明
4096 表示备选排序顺序的区域设置 ID。 在此示例中,4096 表示 .NET Framework 3.5 和更早版本的排序顺序。

子元素

无。

父元素

元素 说明
configuration 公共语言运行时和 .NET Framework 应用程序所使用的每个配置文件中的根元素。
runtime 包含有关运行时初始化选项的信息。

备注

由于 .NET Framework 4 中的 System.Globalization.CompareInfo 类执行的字符串比较、排序和大小写操作符合 Unicode 5.1 标准,因此,String.Compare(String, String)String.LastIndexOf(String) 等字符串比较方法的结果可能与早期版本的 .NET Framework 不同。 如果你的应用程序依赖于旧行为,则可以通过在你的应用程序配置文件中包括 <CompatSortNLSVersion> 元素来还原 .NET Framework 3.5 及早期版本中使用的字串比较和排序规则。

重要

还原旧的字符串比较和排序规则还要求 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>  

另请参阅