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