Share via


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

更新 : 2007 年 11 月

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

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

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

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

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

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

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

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

ms230123.alert_caution(ja-jp,VS.90).gif重要 :

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

参照

概念

InvariantCulture プロパティの使用

正規化と並べ替え