CA1834: Usare StringBuilder.Append(char) per stringhe di caratteri singoli
Proprietà | valore |
---|---|
ID regola | CA1834 |
Title | Usare StringBuilder.Append(char) per le stringhe di caratteri singoli |
Categoria | Prestazioni |
Correzione che causa un'interruzione o un'interruzione | Nessuna interruzione |
Abilitato per impostazione predefinita in .NET 8 | Come suggerimento |
Causa
Questa regola viene attivata quando viene passata una stringa di lunghezza unità al Append metodo .
Descrizione regola
Quando si chiama StringBuilder.Append
con una stringa di lunghezza unità, è consigliabile usare una const char
lunghezza piuttosto che una lunghezza const string
dell'unità per migliorare le prestazioni.
Come correggere le violazioni
La violazione può essere corretta manualmente o, in alcuni casi, usando Azioni rapide per correggere il codice in Visual Studio. Esempi:
Esempio 1
Chiamate di StringBuilder.Append
con un valore letterale stringa di lunghezza unità:
using System;
using System.Text;
namespace TestNamespace
{
class TestClass
{
private void TestMethod()
{
StringBuilder sb = new StringBuilder();
sb.Append("a");
}
}
}
Suggerimento
Una correzione del codice è disponibile per questa regola in Visual Studio. Per usarlo, posizionare il cursore sulla violazione e premere CTRL+. (punto). Scegliere Considera l'uso di "StringBuilder.Append(char)" se applicabile. Nell'elenco delle opzioni presentate.
Correzione applicata da Visual Studio:
using System;
using System.Text;
namespace TestNamespace
{
class TestClass
{
private void TestMethod()
{
StringBuilder sb = new StringBuilder();
sb.Append('a');
}
}
}
In alcuni casi, ad esempio quando si usa un campo classe di lunghezza const string
unità, una correzione del codice non viene suggerita da Visual Studio (ma l'analizzatore viene ancora attivato). Queste istanze richiedono una correzione manuale.
Esempio 2
Chiamate di con un const string
campo di StringBuilder.Append
classe di lunghezza unità:
using System;
using System.Text;
namespace TestNamespace
{
public class Program
{
public const string unitString = "a";
static void Main(string[] args)
{
StringBuilder sb = new StringBuilder();
sb.Append(unitString);
}
}
}
Dopo un'attenta analisi, unitString
qui può essere modificato in un oggetto char
senza causare errori di compilazione.
using System;
using System.Text;
namespace TestNamespace
{
public class Program
{
public const char unitString = 'a';
static void Main(string[] args)
{
StringBuilder sb = new StringBuilder();
sb.Append(unitString);
}
}
}
Quando eliminare gli avvisi
È possibile eliminare una violazione di questa regola se non si è interessati a migliorare le prestazioni quando si usa StringBuilder
.
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 CA1834
// The code that's violating the rule is on this line.
#pragma warning restore CA1834
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.CA1834.severity = none
Per altre informazioni, vedere Come eliminare gli avvisi di analisi del codice.