Share via


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.