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 9 | 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:
- Substitua a concatenação de cadeia de caracteres por uma chamada para
string.Concat
, e - Substitua chamadas para por
Substring
chamadas paraAsSpan
.
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.