Compartilhar via


CA1845: Usar 'string.Concat' com base em span

Property Valor
ID da regra CA1845
Título Use a "string.Concat" baseada em intervalo.
Categoria Desempenho
Correção interruptiva ou sem interrupção Sem interrupção
Habilitado por padrão no .NET 10 Como sugestão

Causa

Essa regra localiza expressões de concatenação de cadeia de caracteres que contêm chamadas Substring e sugere substituir Substring por AsSpan e usar a sobrecarga baseada em span de String.Concat.

Descrição da regra

Chamar Substring produz uma cópia do substring extraído. Ao usar AsSpan em vez de Substring e chamar a sobrecarga de string.Concat que aceita intervalos, você pode eliminar a alocação desnecessária de cadeia de caracteres.

Como corrigir violações

Para corrigir violações:

  1. Substitua a concatenação de cadeia de caracteres por uma chamada para string.Concat, e
  2. Substitua chamadas para Substring por chamadas para AsSpan.

O snippet de código a seguir mostra exemplos de violações e como corrigi-las.

using System;

class Example
{
    public void Method()
    {
        string text = "fwobz the fwutzle";

        //  Violation: allocations by Substring are wasteful.
        string s1 = text.Substring(10) + "---" + text.Substring(0, 5);

        //  Fixed: using AsSpan avoids allocations of temporary strings.
        string s2 = string.Concat(text.AsSpan(10), "---", text.AsSpan(0, 5));
    }
}

Quando suprimir avisos

Não suprima avisos dessa regra. Não há motivo para usar Substring em vez de AsSpan quando o substring extraído está sendo passado apenas para um método com um equivalente baseado em span.

Confira também