Compartilhar via


DA0001: usar StringBuilder para concatenações

Identificação da Regra

DA0001

Categoria

uso do .NET Framework

Analisando métodos

Preparação de exemplos

Instrumentação

Message (Mensagem)

Considere usar StringBuilder para concatenações de cadeia de caracteres

Tipo de mensagem

Aviso

Causa

As chamadas a System.String.Concat é uma proporção significativa de dados de perfil.Use a classe de StringBuilder para construir cadeias de caracteres de vários segmentos.

Descrição da Regra

Um objeto de String é imutável.Em virtude disso, qualquer alteração na cadeia de caracteres cria um novo objeto de cadeia de caracteres e a coleta de lixo original.Esse comportamento é o mesmo que você chama String.Concat explicitamente ou usa os operadores de concatenação de cadeias de caracteres como + + = ou.O desempenho de programa poderá piorar se esses métodos são chamados com frequência, como quando os caracteres são adicionados a uma cadeia de caracteres em um loop estreito.

A classe de StringBuilder é um objeto mutável, e, ao contrário de System.String, a maioria dos métodos em StringBuilder que modificam uma instância deste retorno da classe uma referência à mesma instância.Você pode inserir caracteres ou anexar o texto a uma instância do StringBuilder, e descarta ou substitui os caracteres na instância do sem a necessidade de alocar uma nova instância e excluir a instância original.

Como investigar um aviso

Clique duas vezes na mensagem na janela da Lista de erros para navegar na Exibição de detalhes da função de dados do perfil da amostragem.Localizar as seções de programa que fazem o uso mais frequente de concatenação de cadeia de caracteres.Use a classe de StringBuilder para manipulações de cadeia de caracteres complexas, incluindo operações frequentes de concatenação de cadeia de caracteres.

Para obter mais informações sobre como trabalhar com cadeias de caracteres, As operações a Capítulo 5 - aprimorando o desempenho de código gerenciado seção na biblioteca dos padrões e as práticas da Microsoft.