Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
| 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:
- Substitua a concatenação de string por uma chamada para
string.Concat, e - Substitua as chamadas para
Substringpor 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 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.