格式字符串无效(IDE0043)

财产 Value
规则 ID IDE0043
标题 格式字符串无效
Category 样式
子类别 语言规则(字符串操作)
适用的语言 C# 和 Visual Basic
Options 没有

概述

此规则标志调用复合格式设置方法,例如 String.Format,格式字符串中的占位符索引引用不存在的参数。 例如,如果格式字符串包含 {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)

禁止显示警告

如果只想抑制单个冲突,请将预处理器指令添加到源文件以禁用该规则,然后重新启用该规则。

#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

有关详细信息,请参阅 如何禁止显示代码分析警告

另见