CA1858: Místo IndexOf použijte StartsWith

Vlastnost Hodnota
ID pravidla CA1858
Název Použití StartsWith místo IndexOf
Kategorie Výkon
Oprava, která může být destruktivní nebo nedestruktivní Nezlomitelný
Povoleno ve výchozím nastavení v .NET 10 Jako návrh
Příslušné jazyky C# a Visual Basic

Příčina

String.IndexOf je volána a její výsledek je porovnán s nulou.

Popis pravidla

Je efektivnější a jasnější volání String.StartsWith, než volání String.IndexOf a porovnávání výsledku s nulou, abychom zjistili, jestli řetězec začíná danou předponou.

IndexOf prohledá celý řetězec, zatímco StartsWith porovnává pouze na začátku řetězce.

Jak opravit porušení

Nahraďte volání String.IndexOf voláním String.StartsWith.

Příklad

Následující fragment kódu ukazuje porušení ca1858:

bool M(string s)
{
    return s.IndexOf("abc") == 0;
}
Function M(s As String) As Boolean
    Return s.IndexOf("abc") = 0
End Function

Následující fragment kódu opraví porušení zásad:

bool M(string s)
{
    return s.StartsWith("abc");
}
Function M(s As String) As Boolean
    Return s.StartsWith("abc")
End Function

Kdy potlačit upozornění

Pokud výkon není problém, je bezpečné toto upozornění potlačit.

Potlačení upozornění

Pokud chcete pouze potlačit jedno porušení, přidejte do zdrojového souboru direktivy preprocesoru, abyste pravidlo zakázali a znovu povolili.

#pragma warning disable CA1858
// The code that's violating the rule is on this line.
#pragma warning restore CA1858

Pokud chcete pravidlo pro soubor, složku nebo projekt zakázat, nastavte jeho závažnost v none konfiguračním souboru.

[*.{cs,vb}]
dotnet_diagnostic.CA1858.severity = none

Další informace naleznete v tématu Jak potlačit upozornění analýzy kódu.