Compartilhar 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 string argumento 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 'index' não existe, um System.FormatException é lançada em tempo de execução.

Como corrigir violações

Para corrigir uma violação desta regra, fornecem um item de formato para cada argumento de objeto e fornecer um argumento de objeto para cada item de 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));
      }
   }
}