Freigeben über


CA1845: „string.Concat“ spanbasiert verwenden

Eigenschaft Wert
Regel-ID CA1845
Titel „string.Concat“ auf span-Basis verwenden
Kategorie Leistung
Fix führt zu Unterbrechungen oder bleibt funktionsfähig Untrennbar
Standardmäßig in .NET 10 aktiviert Als Vorschlag
Anwendbare Sprachen C# und Visual Basic

Ursache

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

Regelbeschreibung

Das Aufrufen von Substring erzeugt eine Kopie der extrahierten Teilzeichenfolge. Sie können die unnötige Speicherzuweisung für Zeichenfolgen vermeiden, indem Sie AsSpan anstelle von Substring verwenden und die Überladung von string.Concat aufrufen, die Spans akzeptiert.

So beheben Sie Verstöße

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 zu verwenden, wenn die extrahierte Teilzeichenfolge nur an eine span-basierte Methode übergeben wird.

Siehe auch