CA1865-CA1867: Użyj ciągu. Method(char)" zamiast "string". Method(string)' dla ciągu z pojedynczym znakiem

Właściwości Wartość
Identyfikator reguły CA1865-CA1867
Tytuł Użyj ciągu . Method(char)" zamiast "string". Method(string)' dla ciągu z pojedynczym znakiem
Kategoria Wydajność
Poprawka powodująca niezgodność lub niezgodność Niezgodność
Domyślnie włączone na platformie .NET 8 CA1865 — jako sugestia
CA1866 — jako sugestia
CA1867 — nie

Przyczyna

string.Method(string) jest używany, gdy string.Method(char) był dostępny.

Metody docelowe dla string tych reguł:

  • StartsWith
  • EndsWith
  • IndexOf
  • LastIndexOf

W poniższej tabeli przedstawiono podsumowanie warunków dla każdego z powiązanych identyfikatorów reguł.

Identyfikator diagnostyczny opis Dostępna poprawka kodu
CA1865 Ma zastosowanie, gdy można automatycznie przeprowadzić bezpieczną transformację za pomocą poprawki kodu. Tak
CA1866 Ma zastosowanie, gdy nie ma określonego porównania. Nie.
CA1867 Dotyczy wszelkich innych porównań ciągów, które nie są objęte dwoma innymi regułami. Nie.

Ca1867 jest domyślnie wyłączony.

Opis reguły

Przeciążenie, które przyjmuje parametr char, działa lepiej niż przeciążenie, które przyjmuje parametr ciągu.

Jak naprawić naruszenia

Aby naprawić naruszenie, użyj przeciążenia parametru char zamiast przeciążenia parametru ciągu.

Rozważmy następujący przykład:

public bool StartsWithLetterI()
{
    var testString = "I am a test string.";
    return testString.StartsWith("I");
}
Public Function StartsWithLetterI() As Boolean
    Dim testString As String = "I am a test string."
    Return testString.StartsWith("I")
End Function

Ten kod można zmienić, aby przekazać 'I' go do StartsWith zamiast ciągu "I".

public bool StartsWithLetterI()
{
    var testString = "I am a test string.";
    return testString.StartsWith('I');
}
Public Function StartsWithLetterI() As Boolean
    Dim testString As String = "I am a test string."
    Return testString.StartsWith("I"c)
End Function

Kiedy pomijać ostrzeżenia

Pomiń naruszenie tej reguły, jeśli nie interesuje Cię wpływ na wydajność wywoływania metody za pomocą ciągu.

Pomijanie ostrzeżenia

Jeśli chcesz po prostu pominąć pojedyncze naruszenie, dodaj dyrektywy preprocesora do pliku źródłowego, aby wyłączyć, a następnie ponownie włączyć regułę.

#pragma warning disable CA1865 // or CA1866 or CA1867
// The code that's violating the rule is on this line.
#pragma warning restore CA1865 // or CA1866 or CA1867

Aby wyłączyć regułę dla pliku, folderu lub projektu, ustaw jego ważność na none w pliku konfiguracji.

[*.{cs,vb}]
dotnet_diagnostic.CA1865.severity = none
dotnet_diagnostic.CA1866.severity = none
dotnet_diagnostic.CA1867.severity = none

Aby uzyskać więcej informacji, zobacz Jak pominąć ostrzeżenia dotyczące analizy kodu.

Zobacz też