CA1858: Użyj polecenia StartsWith zamiast indexOf
Właściwości | Wartość |
---|---|
Identyfikator reguły | CA1858 |
Tytuł | Użyj polecenia StartsWith zamiast indexOf |
Kategoria | Wydajność |
Poprawka powodująca niezgodność lub niezgodność | Niezgodność |
Domyślnie włączone na platformie .NET 9 | Jako sugestia |
Przyczyna
String.IndexOf jest wywoływany, a jego wynik jest porównywany z zerem.
Opis reguły
Bardziej wydajne i jaśniejsze jest wywołanie niż wywołanie String.StartsWith String.IndexOf i porównanie wyniku z zerem w celu określenia, czy ciąg rozpoczyna się od danego prefiksu.
IndexOf
wyszukuje cały ciąg, natomiast StartsWith
porównuje go tylko na początku ciągu.
Jak naprawić naruszenia
Zastąp wywołanie metody wywołaniem String.IndexOf metody String.StartsWith.
Przykład
Poniższy fragment kodu przedstawia naruszenie ca1858:
bool M(string s)
{
return s.IndexOf("abc") == 0;
}
Function M(s As String) As Boolean
Return s.IndexOf("abc") = 0
End Function
Poniższy fragment kodu naprawia naruszenie:
bool M(string s)
{
return s.StartsWith("abc");
}
Function M(s As String) As Boolean
Return s.StartsWith("abc")
End Function
Kiedy pomijać ostrzeżenia
Można bezpiecznie pominąć to ostrzeżenie, jeśli wydajność nie jest problemem.
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 CA1858
// The code that's violating the rule is on this line.
#pragma warning restore CA1858
Aby wyłączyć regułę dla pliku, folderu lub projektu, ustaw jego ważność na none
w pliku konfiguracji.
[*.{cs,vb}]
dotnet_diagnostic.CA1858.severity = none
Aby uzyskać więcej informacji, zobacz Jak pominąć ostrzeżenia dotyczące analizy kodu.