CA1845: gebruik tekenreeks op basis van span. Concat'
Eigenschappen | Weergegeven als |
---|---|
Regel-id | CA1845 |
Titel | Gebruik tekenreeks op basis van span. Concat' |
Categorie | Prestaties |
Oplossing is brekend of niet-brekend | Niet-brekend |
Standaard ingeschakeld in .NET 9 | Als suggestie |
Oorzaak
Deze regel zoekt tekenreekssamenvoegingsexpressies die aanroepen bevatten Substring en stelt voor het vervangen Substring door AsSpan en gebruiken van de op span gebaseerde overbelasting van String.Concat.
Beschrijving van regel
Het aanroepen Substring
produceert een kopie van de geëxtraheerde subtekenreeks. AsSpan
Door in plaats van de overbelasting van Substring
die accepteert spanen aan te roepen, kunt u de onnodige toewijzing van string.Concat
tekenreeksen elimineren.
Schendingen oplossen
Schendingen oplossen:
- Vervang de tekenreekssamenvoeging door een aanroep naar
string.Concat
en - Vervang aanroepen door
Substring
aanroepen naarAsSpan
.
In het volgende codefragment ziet u voorbeelden van schendingen en hoe u deze kunt oplossen.
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));
}
}
Wanneer waarschuwingen onderdrukken
Geen waarschuwingen van deze regel onderdrukken. Er is geen reden om deze te gebruiken Substring
AsSpan
wanneer de geëxtraheerde subtekenreeks alleen wordt doorgegeven aan een methode met een equivalent op basis van span.