CA2241: Geeignete Argumente für Formatierungsmethoden angeben
TypeName |
ProvideCorrectArgumentsToFormattingMethods |
CheckId |
CA2241 |
Kategorie |
Microsoft.Usage |
Unterbrechende Änderung |
Nicht unterbrechend |
Ursache
Das format-Zeichenfolgenargument, das an eine Methode wie WriteLine, Write oder String.Format übergeben wurde, enthält kein Formatelement, das den einzelnen Objektargumenten entspricht, oder umgekehrt.
Regelbeschreibung
Die Argumente für Methoden wie WriteLine, Write und Format bestehen aus einer Formatzeichenfolge gefolgt von mehreren System.Object-Instanzen. Die Formatzeichenfolge besteht aus Text und eingebetteten Formatelementen der Form {Index[,Ausrichtung][:formatZeichenfolge]}. ' Index" ist eine nullbasierte ganze Zahl, die angibt, welches der Objekte zu formatieren ist. Wenn es für ein Objekt in der Formatzeichenfolge keinen entsprechenden Index gibt, wird das Objekt ignoriert. Wenn das durch "Index" angegebene Objekt nicht existiert, wird zur Laufzeit eine System.FormatException ausgelöst.
Behandeln von Verstößen
Um einen Verstoß gegen diese Regel zu beheben, geben Sie für jedes Objektargument ein Formatelement an, und geben Sie für jedes Formatelement ein Objektargument an.
Wann sollten Warnungen unterdrückt werden?
Unterdrücken Sie keine Warnung dieser Regel.
Beispiel
Im folgenden Beispiel werden zwei Verstöße gegen diese Regel veranschaulicht.
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));
}
}
}