CA1845 : utilisez la méthode basée sur l’étendue « string.Concat »

Propriété Valeur
Identificateur de la règle CA1845
Titre Utiliser la méthode basée sur l’étendue 'string.Concat'
Catégorie Performance
Le correctif a un effet disruptif ou non disruptif Sans rupture
Activé par défaut dans .NET 10 À titre de suggestion
Langues applicables C# et Visual Basic

Cause

Cette règle localise les expressions de concaténation de chaîne qui contiennent des appels Substring et suggère de remplacer Substring par AsSpan et d’utiliser la surcharge basée sur l’étendue de String.Concat.

Description de la règle

Appeler Substring produit une copie de la sous-chaîne extraite. En utilisant AsSpan au lieu de Substring et en appelant la surcharge de string.Concat qui accepte les segments, vous pouvez éliminer l'allocation inutile de chaînes.

Comment corriger les violations

Pour corriger les violations, procédez comme suit :

  1. Remplacez la concaténation de chaîne par un appel à string.Concat.
  2. Remplacez les appels à Substring par des appels à AsSpan.

L’extrait de code suivant montre des exemples de violations et indique comment les corriger.

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));
    }
}

Quand supprimer les avertissements

Ne supprimez aucun avertissement provenant de cette règle. Il n’y a aucune raison d’utiliser Substring plutôt que AsSpan lorsque la sous-chaîne extraite est seulement passée à une méthode avec un équivalent basé sur l’étendue.

Voir aussi