Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
| 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 10 | 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 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.