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 9 | 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.