CompareInfo クラス

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

データの比較と並べ替えの規則は、カルチャごとに異なります。 たとえば、並べ替え順序は発音に基づく場合もあれば、文字の視覚的表現に基づく場合もあります。 東アジア圏の言語では、文字が表意文字の画数と部首によって並べ替えられます。 また、並べ替えは、言語やカルチャで使用されているアルファベットの順序によっても異なります。 たとえば、デンマーク語の文字 "Æ" は、アルファベットでは "Z" の後に位置します。 さらに、比較では大文字と小文字の区別がなされる場合となされない場合があり、大文字小文字の規則もカルチャごとに異なる場合があります。 CompareInfo クラスは、このカルチャに依存する文字列比較データを保持し、カルチャに依存する文字列操作を実行します。

String.Compare メソッドの呼び出しを含むすべての序数以外の文字列比較操作では CompareInfo オブジェクトが暗黙的に使用されるため、通常、このオブジェクトのインスタンスを直接作成する必要はありません。 ただし、CompareInfo オブジェクトを取得したい場合は、以下のいずれかの方法で取得することができます。

  • 特定のカルチャの CultureInfo.CompareInfo プロパティの値を取得します。

  • カルチャ名を使用して静的メソッド GetCompareInfo を呼び出します。 これにより、CompareInfo オブジェクトへの遅延バインディング アクセスが可能になります。

無視される検索値

文字セットには無視できる文字が含まれています。これらの文字は、言語またはカルチャに依存した比較を実行する際には考慮されません。 IndexOfLastIndexOf などの比較メソッドは、カルチャに依存する比較を実行する際に、このような文字を考慮しません。 無視できる文字には以下が含まれます。

  • String.Empty= カルチャに依存する比較メソッドは、検索対象の文字列の先頭 (インデックス 0) に空の文字列を常に見つけます。

  • 比較オプションが原因で操作において考慮されないコード・ポイントを持つ文字で構成される文字または文字列。特に CompareOptions.IgnoreNonSpace および CompareOptions.IgnoreSymbols オプションでは、シンボルと非スペース結合文字が無視される検索が生成されます。

  • 言語的な意味を持たないコード ポイントを含む文字列。 たとえば、ソフト ハイフン (U+00AD) は、カルチャに依存する文字列比較では常に無視されます。

セキュリティに関する考慮事項

セキュリティ上の決定が文字列比較または大文字と小文字の区別の変更に依存する場合は、InvariantCulture プロパティを使用して、オペレーティング システムのカルチャ設定に関係なく、動作の一貫性を確保する必要があります。

Note

可能であれば、型 CompareOptions のパラメーターを持つ文字列比較メソッドを使用して、予想される比較の種類を指定するべきです。 一般的なルールとして、ユーザー インターフェイスに表示される文字列の比較には (現在のカルチャを使用する) 言語オプションを使用し、安全な比較には Ordinal または OrdinalIgnoreCase を指定します。