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.