カルチャを使用した並べ替え

文字列の並べ替えは、文字列のペアを比較して並べ替える際に使用する、並べ替え規則に基づいて行われます。 アプリケーションが比較操作を実行するときは、1 つ以上の CompareOptions 列挙値を使用して並べ替え規則を明示的に指定するか、または CultureInfo オブジェクトを使用して並べ替え規則を暗黙的に指定できます。

.NET Framework では、単語、文字列、および序数の並べ替え規則をサポートしています。 単語での並べ替えでは、英数字以外の特定の Unicode 文字には特別な重みが割り当てられる、カルチャに依存した文字列の比較が行われます。 たとえば、ハイフン ("-") に割り当てられる重みは非常に小さいため、並べ替えられたリスト内の "coop" と "co-op" の出現位置は隣接します。 文字列の並べ替えは単語の並べ替えに似ていますが、特別なケースは存在せず、英数字以外のすべての記号は、すべての英数字の Unicode 文字より前に来る点が異なります。 序数の並べ替えでは、文字列内の各 Char オブジェクトの数値に基づいて文字列を比較します。 単語、文字列、および序数の各並べ替え規則の詳細については、「CompareOptions」を参照してください。

.NET Framework では、String クラスを使用して文字列を表し、文字列内の各 Unicode 文字は Char 構造体を使用して表します。 カルチャは CultureInfo クラスを使用して表し、比較に関連するカルチャ固有の情報は CompareInfo クラスで表します。 String クラスおよび CompareInfo クラスは、比較メソッドの主要なソースです。 比較操作では、特に別のカルチャが指定されている場合を除き、現在のスレッドに関連付けられているカルチャが使用されます。

カルチャを使用して比較する場合と方法

次のガイドラインに従って、アプリケーションがカルチャに依存した比較を実行するかどうかを決定します。

  • アプリケーションで特定のカルチャに依存した並べ替え操作が必要な場合は、CultureInfo オブジェクトのパラメーターまたは CompareOptions 列挙体のパラメーターを指定する比較メソッドを使用します。

  • アプリケーションで特定のカルチャに限定されない並べ替え操作が必要な場合は、インバリアント カルチャを指定するか、または序数の並べ替えを使用します。 たとえば、アプリケーションで序数の比較を使用して、ファイル名、ミューテックス、および名前付きパイプを並べ替えます。 インバリアント カルチャの詳細については、「InvariantCulture プロパティの使用」を参照してください。 序数の並べ替えの詳細については、「正規化と並べ替え」を参照してください。

  • アプリケーションで文字列の並べ替えに基づいてセキュリティに関する決定を行う場合は、序数の並べ替えを使用します。

重要 :重要

セキュリティに関する決定を行うために使用する比較操作において、以前はインバリアント カルチャの使用が推奨されていましたが、今では推奨されなくなっています。アプリケーションでは代わりに序数の比較を使用してください。

参照

概念

InvariantCulture プロパティの使用

正規化と並べ替え