Compartir a través de


CA2241: Proporcionar argumentos correctos para los métodos de formato

Nombre de tipo

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 System.Object.La cadena de formato está compuesta de texto y elementos de formato del formulario incrustados, {index[,alignment][:formatString]}. 'index' es un entero basado en cero que indica a qué objeto se le da 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, System.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));
      }
   }
}