CA1845: usare la stringa basata su span. Concat'

Proprietà valore
ID regola CA1845
Title Usare la stringa basata su span. Concat'
Categoria Prestazioni
Correzione che causa un'interruzione o un'interruzione Nessuna interruzione
Abilitato per impostazione predefinita in .NET 8 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:

  1. Sostituire la concatenazione di stringhe con una chiamata a string.Concate
  2. Sostituire le chiamate a Substring con le chiamate a AsSpan.

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 gli avvisi da questa regola. Non esiste alcun motivo da usare SubstringAsSpan quando la sottostringa estratta viene passata solo a un metodo con un equivalente basato su span.

Vedi anche