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 :
- Remplacez la concaténation de chaîne par un appel à
string.Concat
. - 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.