Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
| 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.Concaten - Vervang aanroepen door
Substringaanroepen 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 SubstringAsSpan wanneer de geëxtraheerde subtekenreeks alleen wordt doorgegeven aan een methode met een equivalent op basis van span.