CA1310:正確な StringComparison の指定

プロパティ
ルール ID CA1310
Title 正確な StringComparison の指定
[カテゴリ] グローバリゼーション
修正が中断ありか中断なしか なし
.NET 8 では既定で有効 いいえ

原因

文字列比較演算で、StringComparison パラメーターが設定されておらず、カルチャ固有の文字列比較が既定で使用されるメソッド オーバーロードを使用しています。 そのため、その動作は、現在のユーザーのロケール設定によって異なります。

規則の説明

カルチャ固有の文字列比較を既定で使用する文字列比較メソッドでは、ユーザーの意図とは異なる、意図しない実行時の動作が行われる可能性があります。 正確さを期し、意図を明確にするために、StringComparison パラメーターを指定してオーバーロードを使用することをお勧めします。

この規則は、既定でカルチャ固有の StringComparison 値を使用する文字列比較メソッドにフラグを設定します。 詳細については、「現在のカルチャを使用する文字列比較」を参照してください。

注意

すべての文字列比較メソッドの違反を確認する場合は、メソッドで使用される既定の文字列比較に関係なく、代わりに「CA1307: 意味を明確にするために StringComparison を指定する」を使用してください。

違反の修正方法

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

どのようなときに警告を抑制するか

ライブラリまたはアプリケーションをローカライズする予定がない場合は、この規則による警告を抑制しても問題ありません。

警告を抑制する

単一の違反を抑制するだけの場合は、ソース ファイルにプリプロセッサ ディレクティブを追加して無効にしてから、規則をもう一度有効にします。

#pragma warning disable CA1310
// The code that's violating the rule is on this line.
#pragma warning restore CA1310

ファイル、フォルダー、またはプロジェクトの規則を無効にするには、構成ファイルでその重要度を none に設定します。

[*.{cs,vb}]
dotnet_diagnostic.CA1310.severity = none

詳細については、「コード分析の警告を抑制する方法」を参照してください。

関連項目