<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 メソッドに渡すことで、文字列の比較および並べ替えのレガシ規則を特定のアプリケーション ドメインで使用することもできます。

次の例では、2 つの 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>  

関連項目