SortVersion クラス

この記事では、この API のリファレンス ドキュメントへの補足的な解説を提供します。

.NET Framework での並べ替えと文字列の比較

.NET Framework 4 では、.NET Framework の各バージョンに、並べ替えウェイトと文字列正規化に関するデータを含む、特定のバージョンの Unicode に基づくテーブルが含まれていました。 .NET Framework 4.5 以降のバージョンでは、これらのテーブルの存在はオペレーティング システムに依存します。

  • Windows 7 以前のバージョンでは、テーブルは文字列の比較と順序付けに引き続き使用されます。
  • Windows 8 では、.NET Framework の文字列比較と順序付けの操作はオペレーティング システムに委任されます。

そのため、次の表に示すように、文字列比較の結果は、.NET Framework のバージョンだけでなく、オペレーティング システムのバージョンにも依存する可能性があります。 サポートされている Unicode バージョンの一覧は、文字の比較と並べ替えに対してのみ適用されます。カテゴリ別での Unicode 文字の分類には適用されません。

.NET Framework のバージョン オペレーティング システム Unicode バージョン
4 すべてのオペレーティング システム Unicode 5.0
4.5 以降のバージョン Windows 7 Unicode 5.0
4.5 以降のバージョン Windows 8 およびそれ以降のバージョン Unicode 6.0

Windows 8 では、文字列の比較と順序付けに使用される Unicode のバージョンはオペレーティング システムのバージョンによって異なるため、同じ特定のバージョンの .NET Framework で実行されるアプリケーションでも、文字列比較の結果が異なる場合があります。

.NET Core での並べ替えと文字列の比較

.NET (Core) のすべてのバージョンは、文字列比較を実行するときに、基になるオペレーティング システムに依存します。 したがって、文字列比較の結果または文字列の並べ替え順序は、比較を実行するときにオペレーティング システムで使用される Unicode のバージョンによって異なります。 Linux、macOS、Windows 10 以降のバージョンでは、International Components for Unicode ライブラリによって、比較と並べ替えの API の実装が提供されます。

SortVersion クラスを使用する

SortVersion クラスは、文字列の比較と順序付けのために .NET によって使用される Unicode バージョンに関する情報を提供します。 これにより、開発者は、アプリケーションの文字列の比較と並べ替えに使用される Unicode のバージョンの変更を検出して正常に処理できるアプリケーションを作成できます。

SortVersion オブジェクトのインスタンスは、次の 2 つの方法で作成できます。

  • SortVersion コンストラクターを呼び出します。これにより、バージョン番号と並べ替え ID に基づいて、新しい SortVersion オブジェクトのインスタンスが作成されます。 このコンストラクターは、保存したデータから SortVersion オブジェクトを再作成するときに最も便利です。
  • CompareInfo.Version プロパティの値を取得します。 このプロパティは、アプリケーションを実行する .NET 実装で使用される Unicode バージョンに関する情報を提供します。

SortVersion クラスには、FullVersionSortId という 2 つのプロパティがあります。これらは Unicode のバージョンと、文字列比較に使用される特定のカルチャを示します。 FullVersion プロパティは、文字列比較に使用される Unicode バージョンを反映する任意の数値であり、SortId プロパティは、文字列比較に規則が使用されるカルチャを反映する任意の Guid です。 これら 2 つのプロパティの値は、Equals メソッド、Equality 演算子、または Inequality 演算子を使用して 2 つのSortVersion オブジェクトを比較する場合にのみ重要です。

通常、SortVersion オブジェクトは、何らかの形式の、カルチャに依存する順序付けられた文字列データ (インデックスやリテラル文字列など) を保存または取得するときに使用します。 この場合、次の手順が必要です。

  1. 順序付けられた文字列データが保存されると、FullVersionSortId のプロパティ値も保存されます。

  2. 順序付けられた文字列データを取得したら、SortVersion コンストラクターを呼び出すことによって、文字列の順序付けに使用される SortVersion オブジェクトを再作成できます。

  3. この新しくインスタンスが作成された SortVersion オブジェクトが、文字列データの順序付けに規則が使用されるカルチャを反映する SortVersion オブジェクトと比較されます。

  4. 2 つの SortVersion オブジェクトが等しくない場合は、文字列データを再度並べ替える必要があります。