Language

CA1311: カルチャを指定するか、またはインバリアント バージョンを使用する

プロパティ 値
ルール ID CA1311
Title カルチャの指定またはインバリアント バージョンの使用
[カテゴリ] グローバリゼーション
修正が互換性を壊すか壊さないか なし
.NET 10 で既定で有効 いいえ
該当する言語 C# と Visual Basic

原因

カルチャを指定しなくても、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

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

関連項目