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.
| Eigenschap | Waarde |
|---|---|
| Regel-id | CA1845 |
| Titel | Gebruik 'string.Concat' op basis van spans |
| Categorie | Prestaties |
| Fix kan brekend of niet-brekend zijn | Niet-brekend |
| Standaard ingeschakeld in .NET 10 | Als suggestie |
| Toepasselijke talen | C# en Visual Basic |
Oorzaak
Deze regel zoekt tekenreekssamenvoegingsexpressies die aanroepen bevatten Substring en stelt voor om Substring te vervangen door AsSpan en de op span gebaseerde overbelasting van String.Concat te gebruiken.
Beschrijving van regel
Het aanroepen Substring produceert een kopie van de geëxtraheerde subtekenreeks. Door in plaats van Substring de overload-functie van string.Concat die een span accepteert aan te roepen, kunt u de onnodige toewijzing van tekenreeksen elimineren.
Hoe schendingen op te lossen
Om overtredingen op te lossen:
- Vervang de tekenreekssamenvoeging door een aanroep naar
string.Concaten - Vervang aanroepen naar
Substringdoor 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
Onderdruk geen waarschuwingen van deze regel. Er is geen reden om Substring boven AsSpan te verkiezen wanneer de geëxtraheerde subtekenreeks alleen wordt doorgegeven aan een methode met een equivalent dat op spans gebaseerd is.