Partilhar via


CA2241: Fornecer argumentos corretos para métodos de formatação.

TypeName

ProvideCorrectArgumentsToFormattingMethods

CheckId

CA2241

<strong>Categoria</strong>

Microsoft.Usage

Alteração significativa

Não separável

Causa

O format argumento de seqüência de caracteres passado para um método como WriteLine, Write, ou String.Format não contém um item de formato que corresponde ao argumento de cada objeto, ou vice versa.

Descrição da regra

Os argumentos para métodos, como WriteLine, Write, e Format consistem em uma seqüência de caracteres de formato seguida por vários System.Object instâncias. A seqüência de caracteres de formato consiste em texto e itens de formato incorporado do formulário, {índice [, alinhamento] [: formatString]}. ' índice ' é um inteiro baseado em zero que indica quais dos objetos para formatar. Se um objeto não tem um índice correspondente na seqüência de formato, o objeto será ignorado. Se o objeto especificado pelo 'Índice' não existe um System.FormatException é lançada no tempo de execução.

Como corrigir violações

Para corrigir uma violação desta regra, fornecer um item de formato para cada argumento de objeto e fornecer um argumento de objeto para cada item do formato.

Quando suprimir avisos

Não suprimir um aviso da regra.

Exemplo

O exemplo a seguir mostra duas violações da regra.

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