Sdílet prostřednictvím


CA2241: Poskytněte správné argumenty metodě formátování

TypeName

ProvideCorrectArgumentsToFormattingMethods

CheckId

CA2241

Kategorie

Microsoft.Usage

Narušující změna

Nenarušující

Příčina

format Řetězcový argument předaný do metody jako WriteLine, Write, nebo String.Format neobsahuje položku formát, který odpovídá na každý objekt argument nebo naopak.

Popis pravidla

Argumenty metod jako WriteLine, Write, nebo Format obsahují řetězec formátu následovaný několika instancemi Object.Formátovací řetězec se skládá z textu a vložených formátovacích položek formuláře {index [, alignment] [: formatString]}. "index" je od nuly celé číslo, které určuje, které objekty, které chcete formátovat.Objekt je ignorován, pokud formátovací řetězec neobsahuje odpovídající index.Při běhu je vyvolána výjimka FormatException, pokud neexistuje objekt určený indexem.

Jak vyřešit porušení

Poskytnutím formátovací položky pro každý objektový argument a poskytnutím objektového argumentu pro každou formátovací položku dojde k vyřešení porušení tohoto pravidla.

Kdy potlačit upozornění

Nepotlačujte upozornění na toto pravidlo.

Příklad

Následující příklad ukazuje dvě porušení tohoto pravidla.

Imports System

Namespace UsageLibrary

   Class CallsStringFormat

      Sub CallFormat()

         Dim file As String = "file name" 
         Dim errors As Integer = 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))

      End Sub 

   End Class 

End Namespace
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));
      }
   }
}