Freigeben über


CA1845: „string.Concat“ auf Span-Basis verwenden

Eigenschaft Wert
Regel-ID CA1845
Titel „string.Concat“ auf span-Basis verwenden
Kategorie Leistung
Fix führt oder führt nicht zur Unterbrechung Nicht unterbrechend
Standardmäßig in .NET 9 aktiviert Als Vorschlag

Ursache

Diese Regel sucht Zeichenfolgenverkettungsausdrücke, die Substring Aufrufe enthalten, und schlägt vor, Substring durch AsSpan zu ersetzen und das Span-basierte Überladen von String.Concat zu verwenden.

Regelbeschreibung

Das Aufrufen von Substring erzeugt eine Kopie der extrahierten Teilzeichenfolge. Sie können die unnötige Zeichenfolgenzuordnung entfernen, indem Sie AsSpan anstelle von Substring verwenden und die Überladung von string.Concat aufrufen, die Spans akzeptiert.

Behandeln von Verstößen

So beheben Sie Verstöße:

  1. Ersetzen Sie die Zeichenfolgenverkettung durch einen Aufruf von string.Concat, und
  2. Ersetzen Sie Aufrufe von Substring durch AsSpan.

Der folgende Codeausschnitt zeigt Beispiele für Verstöße und deren Behebung.

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

Wann sollten Warnungen unterdrückt werden?

Unterdrücken Sie keine Warnungen von dieser Regel. Es gibt keinen Grund, Substring statt AsSpan verwenden, wenn die extrahierte Teilzeichenfolge nur an eine Methode mit einer Span-basierten Entsprechung übergeben wird.

Siehe auch