Udostępnij za pośrednictwem


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 8 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.StartsWithString.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.