Partilhar via


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

TypeName

ProvideCorrectArgumentsToFormattingMethods

CheckId

CA2241

Categoria

Microsoft.Usage

Alteração Significativa

Sem Quebra

Causa

O argumento de cadeia de caracteres de format passado ao método como WriteLine, Write, ou String.Format não contém um item de formato que corresponde a cada argumento do objeto, ou vice-versa.

Descrição da Regra

Os argumentos para os métodos como WriteLine, Write, e Format consistem em uma cadeia de formato seguida por várias instâncias de Object .A cadeia de caracteres de formato consiste em texto e itens de formato inseridos do formulário, índice, alinhamento {[] [: formatString]}. os índices “é um inteiro baseado em zero que indica qual dos objetos no formato.Se um objeto não tiver um índice correspondente na cadeia de caracteres de formato, o objeto será ignorado.Se o objeto especificado por “índices não existir, FormatException será gerado em tempo de execução.

Como Corrigir Violações

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

Quando Suprimir Alertas

Não elimine um alerta desta 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));
      }
   }
}