CA2241: Proporcionar argumentos correctos para los métodos de formato
TypeName |
ProvideCorrectArgumentsToFormattingMethods |
Identificador de comprobación |
CA2241 |
Categoría |
Microsoft.Usage |
Cambio problemático |
No |
Motivo
El argumento de cadena format pasado a un método como WriteLine, Write o String.Format no contiene un elemento de formato que corresponda a cada argumento de objeto o viceversa.
Descripción de la regla
Los argumentos de métodos como WriteLine, Write y Format constan de una cadena de formato seguida de varias instancias de Object.La cadena de formato está compuesta de texto y elementos de formato del formulario incrustados, {index[,alignment][:formatString]}. “los índices son un entero cero- basado en que indica cuál de los objetos al formato.Si un objeto no tiene un índice correspondiente en la cadena de formato, se omite el objeto.Si el objeto especificado por 'index' no existe, FormatException se produce en tiempo de ejecución.
Cómo corregir infracciones
Para corregir una infracción de esta regla, proporcione un elemento de formato para cada argumento de objeto y proporcione un argumento de objeto para cada elemento de formato.
Cuándo suprimir advertencias
No suprima las advertencias de esta regla.
Ejemplo
El ejemplo siguiente muestra dos infracciones de esta regla.
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));
}
}
}