CA1858: StartsWith gebruiken in plaats van IndexOf
Eigenschappen | Weergegeven als |
---|---|
Regel-id | CA1858 |
Titel | StartsWith gebruiken in plaats van IndexOf |
Categorie | Prestaties |
Oplossing is brekend of niet-brekend | Niet-brekend |
Standaard ingeschakeld in .NET 9 | Als suggestie |
Oorzaak
String.IndexOf wordt aangeroepen en het resultaat wordt vergeleken met nul.
Beschrijving van regel
Het is efficiënter en duidelijker om aan te roepen String.StartsWith dan om het resultaat aan te roepen String.IndexOf en te vergelijken met nul om te bepalen of een tekenreeks begint met een bepaald voorvoegsel.
IndexOf
doorzoekt de hele tekenreeks, terwijl StartsWith
alleen aan het begin van de tekenreeks wordt vergeleken.
Schendingen oplossen
Vervang de aanroep door String.IndexOf een aanroep naar String.StartsWith.
Opmerking
In het volgende codefragment ziet u een schending van CA1858:
bool M(string s)
{
return s.IndexOf("abc") == 0;
}
Function M(s As String) As Boolean
Return s.IndexOf("abc") = 0
End Function
Met het volgende codefragment wordt de schending opgelost:
bool M(string s)
{
return s.StartsWith("abc");
}
Function M(s As String) As Boolean
Return s.StartsWith("abc")
End Function
Wanneer waarschuwingen onderdrukken
Het is veilig om deze waarschuwing te onderdrukken als de prestaties geen probleem zijn.
Een waarschuwing onderdrukken
Als u slechts één schending wilt onderdrukken, voegt u preprocessorrichtlijnen toe aan uw bronbestand om de regel uit te schakelen en vervolgens opnieuw in te schakelen.
#pragma warning disable CA1858
// The code that's violating the rule is on this line.
#pragma warning restore CA1858
Als u de regel voor een bestand, map of project wilt uitschakelen, stelt u de ernst none
ervan in op het configuratiebestand.
[*.{cs,vb}]
dotnet_diagnostic.CA1858.severity = none
Zie Codeanalysewaarschuwingen onderdrukken voor meer informatie.