Condividi tramite


CA1858: Usare StartsWith anziché IndexOf

Proprietà valore
ID regola CA1858
Title Usare StartsWith anziché IndexOf
Categoria Prestazioni
Correzione che causa un'interruzione o un'interruzione Nessuna interruzione
Abilitato per impostazione predefinita in .NET 8 Come suggerimento

Causa

String.IndexOf viene chiamato e il risultato viene confrontato con zero.

Descrizione regola

È più efficiente e più chiaro chiamare che chiamare String.StartsWithString.IndexOf e confrontare il risultato con zero per determinare se una stringa inizia con un prefisso specificato.

IndexOf cerca l'intera stringa, mentre StartsWith confronta solo all'inizio della stringa.

Come correggere le violazioni

Sostituire la chiamata a String.IndexOf con una chiamata a String.StartsWith.

Esempio

Il frammento di codice seguente mostra una violazione di CA1858:

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

Il frammento di codice seguente corregge la violazione:

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

Quando eliminare gli avvisi

Se le prestazioni non sono un problema, è possibile eliminare questo avviso.

Eliminare un avviso

Se si vuole eliminare una singola violazione, aggiungere direttive del preprocessore al file di origine per disabilitare e quindi riabilitare la regola.

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

Per disabilitare la regola per un file, una cartella o un progetto, impostarne la gravità none su nel file di configurazione.

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

Per altre informazioni, vedere Come eliminare gli avvisi di analisi del codice.