次の方法で共有


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 以降のバージョンでは、Unicode ライブラリ 用の International Components によって、比較 API と並べ替え API の実装が提供されます。

SortVersion クラスを使用する

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

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

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

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

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

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

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

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

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