Condividi tramite


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
La correzione causa un'interruzione o meno Non rompente
Abilitato per impostazione predefinita in .NET 10 Come suggerimento
Linguaggi applicabili C# e Visual Basic

Causa

Questa regola viene attivata quando viene passata una stringa di lunghezza unitaria al metodo Append.

Descrizione regola

Quando si chiama StringBuilder.Append con una stringa della lunghezza di una unità, è consigliabile usare un const char anziché un const string della lunghezza 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 del codice per CA1834 - Usare StringBuilder.Append(char) per stringhe di caratteri singoli

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 utilizza un campo classe di lunghezza unitaria const string, una correzione del codice non viene suggerita da Visual Studio (ma l'analizzatore viene comunque attivato). Queste istanze richiedono una correzione manuale.

Esempio 2

Chiamate di StringBuilder.Append con un campo di classe const string con lunghezza unitaria:

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.

Vedi anche