Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
| 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.