CA1865-CA1867: Usare 'string. Method(char)' anziché 'string. Method(string)' per stringa con carattere singolo
Proprietà | valore |
---|---|
ID regola | CA1865-CA1867 |
Title | Usare 'string. Method(char)' anziché 'string. Method(string)' per stringa con carattere singolo |
Categoria | Prestazioni |
Correzione che causa un'interruzione o un'interruzione | Nessuna interruzione |
Abilitato per impostazione predefinita in .NET 8 | CA1865- Come suggerimento CA1866- Come suggerimento CA1867 - No |
Causa
string.Method(string)
viene utilizzato quando string.Method(char)
era disponibile.
I metodi di destinazione per string
queste regole:
StartsWith
EndsWith
IndexOf
LastIndexOf
La tabella seguente riepiloga le condizioni per ogni ID regola correlato.
ID di diagnostica | Descrizione | Correzione del codice disponibile |
---|---|---|
CA1865 | Si applica quando una trasformazione sicura può essere eseguita automaticamente con una correzione del codice. | Sì |
CA1866 | Si applica quando non è presente alcun confronto specificato. | No |
CA1867 | Si applica per qualsiasi altro confronto di stringhe non coperto dalle altre due regole. | No |
CA1867 è disabilitato per impostazione predefinita.
Descrizione regola
L'overload che accetta un parametro char offre prestazioni migliori rispetto all'overload che accetta un parametro stringa.
Come correggere le violazioni
Per correggere una violazione, usare l'overload del parametro char anziché l'overload del parametro stringa.
Si consideri l'esempio seguente:
public bool StartsWithLetterI()
{
var testString = "I am a test string.";
return testString.StartsWith("I");
}
Public Function StartsWithLetterI() As Boolean
Dim testString As String = "I am a test string."
Return testString.StartsWith("I")
End Function
Questo codice può essere modificato in modo da passare 'I'
a StartsWith
anziché alla stringa "I"
.
public bool StartsWithLetterI()
{
var testString = "I am a test string.";
return testString.StartsWith('I');
}
Public Function StartsWithLetterI() As Boolean
Dim testString As String = "I am a test string."
Return testString.StartsWith("I"c)
End Function
Quando eliminare gli avvisi
Eliminare una violazione di questa regola se non si è interessati all'impatto sulle prestazioni della chiamata al metodo con una stringa.
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 CA1865 // or CA1866 or CA1867
// The code that's violating the rule is on this line.
#pragma warning restore CA1865 // or CA1866 or CA1867
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.CA1865.severity = none
dotnet_diagnostic.CA1866.severity = none
dotnet_diagnostic.CA1867.severity = none
Per altre informazioni, vedere Come eliminare gli avvisi di analisi del codice.