書式指定文字列が無効です (IDE0043)

財産 価値
ルール識別子 IDE0043
タイトル 書式指定文字列が無効です
Category Style
サブカテゴリー 言語規則 (文字列操作)
該当する言語 C# と Visual Basic
Options なし

Overview

このルールは、 String.Formatなどの複合書式指定メソッドの呼び出しにフラグを設定します。書式指定文字列内のプレースホルダー インデックスは、存在しない引数を参照します。 たとえば、書式指定文字列に {1} が含まれているが、引数が 1 つだけ指定されている場合 ( {0}としてアクセス可能)、ルールは {1} プレースホルダーにフラグを設定します。

この規則は、形式文字列引数も検証するコード品質規則 CA2241 に似ています。

Example

// Code with violations.
// '{1}' is out of range — only one argument is provided.
string s = string.Format("Hello, {0}! You have {1} messages.", "Alice");

// Fixed code.
string s = string.Format("Hello, {0}! You have {1} messages.", "Alice", 5);
' Code with violations.
' '{1}' is out of range — only one argument is provided.
Dim s As String = String.Format("Hello, {0}! You have {1} messages.", "Alice")

' Fixed code.
Dim s As String = String.Format("Hello, {0}! You have {1} messages.", "Alice", 5)

警告を抑制する

1 つの違反のみを抑制する場合は、ソース ファイルにプリプロセッサ ディレクティブを追加して無効にしてから、ルールを再度有効にします。

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

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

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

すべてのコード スタイル規則を無効にするには、Styleでカテゴリ none の重要度を に設定してください。

[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Style.severity = none

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

こちらも参照ください