Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
| 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 :
- Remplacez la concaténation de chaîne par un appel à
string.Concat. - Remplacez les appels à
Substringpar 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.