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