CA2241: Provide correct arguments to formatting methods
TypeName | ProvideCorrectArgumentsToFormattingMethods |
CheckId | CA2241 |
Category | Microsoft.Usage |
Breaking Change | Non Breaking |
The format string argument passed to a method such as WriteLine, Write, or String.Format does not contain a format item that corresponds to each object argument, or vice versa.
The arguments to methods such as WriteLine, Write, and Format consist of a format string followed by several System.Object instances. The format string consists of text and embedded format items of the form, {index[,alignment][:formatString]}. 'index' is a zero-based integer that indicates which of the objects to format. If an object does not have a corresponding index in the format string, the object is ignored. If the object specified by 'index' does not exist, a System.FormatException is thrown at runtime.
The following example shows two violations of the rule.
using System; namespace UsageLibrary { class CallsStringFormat { void CallFormat() { string file = "file name"; int errors = 13; // Violates the rule. Console.WriteLine(string.Format("{0}", file, errors)); Console.WriteLine(string.Format("{0}: {1}", file, errors)); // Violates the rule and generates a FormatException at runtime. Console.WriteLine(string.Format("{0}: {1}, {2}", file, errors)); } } }