CA1845: Użyj ciągu opartego na span. Concat'

Właściwości Wartość
Identyfikator reguły CA1845
Tytuł Użyj ciągu opartego na span. Concat'
Kategoria Wydajność
Poprawka powodująca niezgodność lub niezgodność Niezgodność
Domyślnie włączone na platformie .NET 8 Jako sugestia

Przyczyna

Ta reguła lokalizuje wyrażenia łączenia ciągów, które zawierają Substring wywołania i sugerują zamianę SubstringAsSpan na i przy użyciu przeciążenia opartego String.Concatna zakresie .

Opis reguły

Wywołanie Substring tworzy kopię wyodrębnionego podciągu. Używając funkcji AsSpan zamiast Substring i wywołując przeciążenie string.Concat , które akceptuje zakresy, można wyeliminować niepotrzebną alokację ciągów.

Jak naprawić naruszenia

Aby naprawić naruszenia:

  1. Zastąp łączenie ciągów wywołaniem metody string.Concat, i
  2. Zastąp wywołania funkcji Substring wywołaniami funkcji AsSpan.

Poniższy fragment kodu przedstawia przykłady naruszeń i sposób ich naprawiania.

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));
    }
}

Kiedy pomijać ostrzeżenia

Nie pomijaj ostrzeżeń z tej reguły. Nie ma powodu, aby użyć SubstringAsSpan metody , gdy wyodrębniony podciąg jest przekazywany tylko do metody z równoważnikiem opartym na zakresie.

Zobacz też