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 8 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:
- Ersetzen Sie die Zeichenfolgenverkettung durch einen Aufruf von
string.Concat
, und - Ersetzen Sie Aufrufe von
Substring
durchAsSpan
.
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.