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