次の方法で共有


順序を示す StringComparison を使用します

更新 : 2007 年 11 月

TypeName

UseOrdinalStringComparison

CheckId

CA1309

カテゴリ

Microsoft.Globalization

互換性に影響する変更点

なし

原因

非言語的な文字列比較演算で、StringComparison パラメータが Ordinal または OrdinalIgnoreCase に設定されていません。

規則の説明

多くの文字列演算 (最も重要なものは Compare() メソッドおよび Equals() メソッド) では、StringComparision 列挙体をパラメータとして受け取るオーバーロードが用意されました。

StringComparison.Ordinal または StringComparison.OrdinalIgnoreCase を指定すると、文字列比較は非言語的になります。つまり、比較を判断する場合に、自然言語固有の機能は無視されます。これは、判断は単純なバイト比較に基づいたものであることを示し、大文字と小文字の指定、またはカルチャでパラメータ化される同等の表は無視されます。その結果、パラメータを StringComparison.Ordinal または StringComparison.OrdinalIgnoreCase に明示的に設定することによって、多くの場合、コードの速度、正確さ、および信頼性が向上します。

違反の修正方法

この規則違反を修正するには、文字列比較メソッドを、StringComparison 列挙体をパラメータとして受け取るオーバーロードに変更し、Ordinal または OrdinalIgnoreCase を指定します。たとえば、String.Compare(str1, str2) を String.Compare(str1, str2, StringComparison.Ordinal) に変更します。

警告を抑制する状況

ライブラリまたはアプリケーションが限定されたローカル ユーザーを想定している場合、または現在のカルチャのセマンティクスを使用する必要がある場合は、この規則による警告を抑制しても安全です。

参照

参照

StringComparison を指定します

その他の技術情報

グローバリゼーションの警告