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

Propriété Value
Identificateur de la règle CA1845
Titre Utiliser la méthode basée sur l’étendue 'string.Concat'
Catégorie Performances
Le correctif est cassant ou non cassant Sans rupture
Activé par défaut dans .NET 8 À titre de suggestion

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

Substring permet de produire 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 étendues, vous pouvez éliminer l’allocation de chaîne inutile.

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 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