Condividi tramite


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.
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.

Vedi anche