次の方法で共有


<CompatSortNLSVersion> 要素

更新 : 2010 年 5 月

文字列比較の実行時に、ランタイムがレガシ並べ替え順序を使用するように指定します。

<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) メソッドを呼び出し、現在のカルチャの規則を使用してそれらのオブジェクトを比較する方法を示します。

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
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);       
   }
}

.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>

参照

参照

ランタイム設定スキーマ

その他の技術情報

.NET Framework の構成ファイル スキーマ

履歴の変更

日付

履歴

理由

2010 年 5 月

<CompatSortNLSVersion> スイッチが sort00001000.dll に依存していることについての説明が追加されました。

コンテンツ バグ修正