Partilhar via


CA1834: Use StringBuilder.Append(char) para cadeias de caracteres únicos

Property valor
ID da regra CA1834
Título Use StringBuilder.Append(char) para cadeias de caracteres de caractere único
Categoria Desempenho
A correção está quebrando ou não quebrando Sem quebra
Habilitado por padrão no .NET 9 Como sugestão

Motivo

Esta regra é acionada quando uma cadeia de caracteres de comprimento de unidade é passada para o Append método.

Descrição da regra

Ao chamar StringBuilder.Append com uma cadeia de caracteres de comprimento de unidade, considere usar um const char comprimento em vez de um comprimento const string de unidade para melhorar o desempenho.

Como corrigir violações

A violação pode ser corrigida manualmente ou, em alguns casos, usando ações rápidas para corrigir o código no Visual Studio. Exemplos:

Exemplo 1

Invocações de StringBuilder.Append com um literal de cadeia de caracteres de comprimento de unidade:

using System;
using System.Text;

namespace TestNamespace
{
    class TestClass
    {
        private void TestMethod()
        {
            StringBuilder sb = new StringBuilder();
            sb.Append("a");
        }
    }
}

Gorjeta

Uma correção de código está disponível para essa regra no Visual Studio. Para usá-lo, posicione o cursor sobre a violação e pressione Ctrl+. Escolha Considere usar 'StringBuilder.Append(char)' quando aplicável. na lista de opções apresentada.

Correção de código para CA1834 - Use StringBuilder.Append(char) para cadeias de caracteres únicos

Correção aplicada pelo Visual Studio:

using System;
using System.Text;

namespace TestNamespace
{
    class TestClass
    {
        private void TestMethod()
        {
            StringBuilder sb = new StringBuilder();
            sb.Append('a');
        }
    }
}

Em alguns casos, por exemplo, ao usar um campo de classe de comprimento const string de unidade, uma correção de código não é sugerida pelo Visual Studio (mas o analisador ainda é acionado). Essas instâncias exigem uma correção manual.

Exemplo 2

Invocações de com um StringBuilder.Append campo de const string classe de comprimento unitário:

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);
        }
    }
}

Após uma análise cuidadosa, unitString aqui pode ser alterado para um char sem causar erros de compilação.

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 suprimir avisos

É seguro suprimir uma violação desta regra se você não estiver preocupado em melhorar o desempenho ao usar StringBuildero .

Suprimir um aviso

Se você quiser apenas suprimir uma única violação, adicione diretivas de pré-processador ao seu arquivo de origem para desativar e, em seguida, reativar a regra.

#pragma warning disable CA1834
// The code that's violating the rule is on this line.
#pragma warning restore CA1834

Para desabilitar a regra de um arquivo, pasta ou projeto, defina sua gravidade como none no arquivo de configuração.

[*.{cs,vb}]
dotnet_diagnostic.CA1834.severity = none

Para obter mais informações, consulte Como suprimir avisos de análise de código.

Consulte também