CA1845: Gebruik span-gebaseerde 'string.Concat'.

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:

  1. Vervang de tekenreekssamenvoeging door een aanroep naar string.Concaten
  2. Vervang aanroepen naar Substring door aanroepen naar AsSpan.

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.

Zie ook