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