次の方法で共有


CA1310: StringComparison の正しい指定

プロパティ
ルール ID CA1310
Title 正確さのための StringComparison の指定
[カテゴリ] グローバリゼーション
修正が破壊的か非破壊的か なし
.NET 10 で既定で有効 いいえ
該当する言語 C# と Visual Basic

原因

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

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

関連項目