CA1311: カルチャの指定またはインバリアント バージョンの使用

プロパティ
ルール ID CA1311
Title カルチャの指定またはインバリアント バージョンの使用
[カテゴリ] グローバリゼーション
修正が中断ありか中断なしか なし
.NET 8 では既定で有効 いいえ

原因

カルチャを指定しなくても、String.ToUpper() または String.ToLower() に呼び出しが行われます。

規則の説明

カルチャを指定するか、インバリアント カルチャを使用すると、ToUpper または ToLower を呼び出すときに、現在のカルチャへの暗黙的な依存を回避できます。 インバリアント カルチャを使用すると、アプリケーションのカルチャに関係なく一貫した結果が得られます。

違反の修正方法

パラメーターなしの String.ToUpper() または String.ToLower() メソッドを呼び出す代わりに、ToUpper(CultureInfo) または ToUpperInvariant() または ToLower(CultureInfo) または ToLowerInvariant() を呼び出します。

次のコード スニペットは、CA1311 の違反を示しています。

string s = "hello";
s = s.ToLower();
Dim s As String = "hello"
s.ToLower()

次のコード スニペットでは違反を修正しています。

string s = "hello";
s = s.ToLowerInvariant();
Dim s As String = "hello"
s.ToLowerInvariant()

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

Thread.CurrentCulture が変更されない確信がある場合は、この規則からの警告を抑制しても問題ありません。

警告を抑制する

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

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

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

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

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

関連項目