Partilhar via


CA1845: Use 'string.Concat' baseado em span.

Propriedade valor
ID da regra CA1845
Título Utilizar 'string.Concat' baseado em span
Categoria Desempenho
A correção causa interrupção ou não Ininterrupto
Habilitado por padrão no .NET 10 Como sugestão
Línguas aplicáveis C# e Visual Basic

Motivo

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

Descrição da regra

A chamada Substring produz uma cópia da substring extraída. AsSpan Ao usar em vez de Substring e chamar a sobrecarga de string.Concat que aceita intervalos, pode eliminar a alocação desnecessária de strings.

Como corrigir violações

Para corrigir violações:

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

O trecho 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 ignore avisos desta regra. Não há razão para usar Substring em vez de AsSpan quando a substring extraída está a ser passada apenas para um método com um equivalente baseado em intervalo.

Consulte também