Partager via


CA2241 : Fournissez des arguments corrects aux méthodes de mise en forme

TypeName

ProvideCorrectArgumentsToFormattingMethods

CheckId

CA2241

Catégorie

Microsoft.Usage

Modification avec rupture

Modification sans rupture

Cause

L'argument de chaîne format passé à une méthode telle que WriteLine, Write ou String.Format ne contient pas un élément de mise en forme qui correspond à chaque argument objet, ou vice versa.

Description de la règle

Les arguments des méthodes comme WriteLine, Write et Format se composent d'une chaîne de mise en forme suivie par plusieurs instances System.Object.La chaîne de mise en forme se compose de texte et éléments de format incorporés du formulaire, {index[,alignment][:formatString]}. 'index' est un entier de base zéro qui indique l'objet à mettre en forme.Si un objet n'a pas d'index correspondant dans la chaîne de mise en forme, l'objet est ignoré.Si l'objet spécifié par 'index' n'existe pas, une System.FormatException est levée au moment de l'exécution.

Comment corriger les violations

Pour corriger une violation de cette règle, fournissez un élément de format pour chaque argument d'objet et un argument d'objet pour chaque élément de format.

Quand supprimer les avertissements

Ne supprimez aucun avertissement de cette règle.

Exemple

L'exemple suivant présente deux violations de la règle.

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