CA1845: usare la stringa basata su span. Concat'
Proprietà | valore |
---|---|
ID regola | CA1845 |
Title | Usare la stringa basata su span. Concat' |
Categoria | Prestazioni |
La correzione causa un'interruzione o meno | Non causa un'interruzione |
Abilitato per impostazione predefinita in .NET 9 | Come suggerimento |
Causa
Questa regola individua espressioni di concatenazione di stringhe che contengono Substring chiamate e suggerisce di sostituire Substring con AsSpan e usando l'overload basato su span di String.Concat.
Descrizione regola
La chiamata Substring
produce una copia della sottostringa estratta. AsSpan
Usando invece di Substring
e chiamando l'overload di string.Concat
che accetta intervalli, è possibile eliminare l'allocazione di stringhe non necessarie.
Come correggere le violazioni
Per correggere le violazioni:
- Sostituire la concatenazione di stringhe con una chiamata a
string.Concat
e - Sostituire le chiamate a
Substring
con le chiamate aAsSpan
.
Il frammento di codice seguente mostra esempi di violazioni e come risolverli.
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 eliminare gli avvisi
Non eliminare avvisi da questa regola. Non esiste alcun motivo da usare Substring
AsSpan
quando la sottostringa estratta viene passata solo a un metodo con un equivalente basato su span.