CA1858: Använd StartsWith i stället för IndexOf
Property | Värde |
---|---|
Regel-ID | CA1858 |
Title | Använda StartsWith i stället för IndexOf |
Kategori | Prestanda |
Korrigeringen är icke-bakåtkompatibel | Icke-icke-bryta |
Aktiverad som standard i .NET 9 | Som förslag |
Orsak
String.IndexOf anropas och resultatet jämförs med noll.
Regelbeskrivning
Det är mer effektivt och tydligare att anropa String.StartsWith än att anropa String.IndexOf och jämföra resultatet med noll för att avgöra om en sträng börjar med ett angivet prefix.
IndexOf
söker i hela strängen, medan StartsWith
den bara jämförs i början av strängen.
Så här åtgärdar du överträdelser
Ersätt anropet till String.IndexOf med ett anrop till String.StartsWith.
Exempel
Följande kodfragment visar ett brott mot CA1858:
bool M(string s)
{
return s.IndexOf("abc") == 0;
}
Function M(s As String) As Boolean
Return s.IndexOf("abc") = 0
End Function
Följande kodfragment åtgärdar överträdelsen:
bool M(string s)
{
return s.StartsWith("abc");
}
Function M(s As String) As Boolean
Return s.StartsWith("abc")
End Function
När du ska ignorera varningar
Det är säkert att ignorera den här varningen om prestanda inte är ett problem.
Ignorera en varning
Om du bara vill förhindra en enda överträdelse lägger du till förprocessordirektiv i källfilen för att inaktivera och aktiverar sedan regeln igen.
#pragma warning disable CA1858
// The code that's violating the rule is on this line.
#pragma warning restore CA1858
Om du vill inaktivera regeln för en fil, mapp eller ett projekt anger du dess allvarlighetsgrad till none
i konfigurationsfilen.
[*.{cs,vb}]
dotnet_diagnostic.CA1858.severity = none
Mer information finns i Så här utelämnar du kodanalysvarningar.