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 8 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 comprimento em vez de um const char 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 com um literal de cadeia de caracteres de comprimento de StringBuilder.Append 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.

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

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 de unidade, uma correção de const string 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 const string campo de classe de StringBuilder.Append 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 para um arquivo, pasta ou projeto, defina sua severidade 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