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

Code fix for CA1834 - Use StringBuilder.Append(char) for single character strings

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.

Vedi anche