CA2241: Dostarcz poprawne argumenty do metod formatowania
TypeName |
ProvideCorrectArgumentsToFormattingMethods |
CheckId |
CA2241 |
Kategoria |
Microsoft.Usage |
Zmiana kluczowa |
Niekluczowa |
Przyczyna
format Ciąg argumentu przekazanego do metody, takie jak WriteLine, Write, lub String.Format nie zawiera element formatu, który odpowiada argumentowi każdego obiektu, lub odwrotnie.
Opis reguły
Argumenty metod, takich jak WriteLine, Write, i Format składają się z ciągu formatu następuje kilka Object wystąpień.Ciąg formatu składa się z tekstu i formatowanie osadzonego elementu formularza, {index [, wyrównanie] [: formatString]}. "wskaźnik" jest całkowitą względem zera, który wskazuje, które obiekty do formatowania.Jeśli obiekt nie ma odpowiedni indeks w formacie ciąg, obiekt zostanie zignorowany.Jeśli określony przez "index" obiekt nie istnieje, FormatException jest generowany w czasie wykonywania.
Jak naprawić naruszenia
Aby naprawić to naruszenie tej zasady, zapewnić element formatu dla każdego argumentu obiektu i podać argument obiektu dla każdego elementu format.
Kiedy pominąć ostrzeżenia
Nie pomijaj ostrzeżeń dla tej reguły.
Przykład
Poniższy przykład pokazuje dwa naruszenia reguły.
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));
}
}
}