This documentation is archived and is not being maintained.

Provide correct arguments to formatting methods







Breaking Change


The format argument passed to System.String.Format does not contain a format item that corresponds to each object argument, or vice versa.

The arguments to the Format method 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.

To fix a violation of this rule, provide a format item for each object argument and provide an object argument for each format item.

Do not exclude a warning from this rule.

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));