Udostępnij za pośrednictwem


CA1845: Użyj 'string.Concat' opartego na 'span'.

Właściwości Wartość
Identyfikator reguły CA1845
Tytuł Użyj 'string.Concat' opartego na span.
Kategoria Wydajność
Poprawka łamiąca lub nienaruszająca Niezgodność
Domyślnie włączone na platformie .NET 10 Jako sugestia
Zastosowane języki C# i Visual Basic

Przyczyna

Ta reguła lokalizuje wyrażenia łączenia ciągów, które zawierają wywołania Substring i sugeruje zastąpienie Substring za pomocą AsSpan oraz użycie przeciążenia metodą span w String.Concat.

Opis reguły

Wywołanie Substring kopiuje wyodrębniony podciąg. 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 konkatenację 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żywać Substring zamiast AsSpan, gdy wyodrębniony podciąg jest przekazywany tylko do metody posiadającej odpowiednik oparty na zakresie.

Zobacz też