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