Partilhar via


CA1845: Use 'string' 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 8 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 e chamando a sobrecarga de que aceita spans, você pode eliminar a alocação de cadeia de Substringstring.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 chamadas para SubstringAsSpan.

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