Share via


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:

  1. Vervang de tekenreekssamenvoeging door een aanroep naar string.Concaten
  2. Vervang aanroepen door Substring 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

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.

Zie ook