Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
| 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:
- Substitua a concatenação de cadeia de caracteres por uma chamada para
string.Concat, e - Substitua chamadas para
Substringpor chamadas paraAsSpan.
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.