Udostępnij za pośrednictwem


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