Partilhar via


CA1845: Use a cadeia de caracteres baseada em span. Concat»

Property valor
ID da regra CA1845
Título Use span-based 'string. Concat»
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 localiza expressões de concatenação de cadeia de caracteres que contêm Substring chamadas e sugere a substituição Substring e AsSpan o uso da sobrecarga baseada em extensão de String.Concat.

Descrição da regra

A chamada Substring produz uma cópia da substring extraída. AsSpan Usando em vez de Substring e chamando a sobrecarga de que aceita spans, você pode eliminar a alocação de cadeia de string.Concat caracteres desnecessária.

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 por Substring 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 suprima avisos desta regra. Não há razão para usar Substring mais AsSpan quando a substring extraída está sendo passada apenas para um método com um equivalente baseado em extensão.

Consulte também