CA1834 : Utiliser StringBuilder.Append (char) pour les chaînes de caractères uniques
Propriété | Value |
---|---|
Identificateur de la règle | CA1834 |
Titre | Utiliser StringBuilder.Append (char) pour les chaînes de caractères uniques |
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 se déclenche quand une chaîne de longueur d’unité est transmise à la méthode Append.
Description de la règle
Quand vous appelez StringBuilder.Append
avec une chaîne de longueur d’unité, envisagez d’utiliser une longueur d’unité const char
plutôt qu’une longueur d’unité const string
pour améliorer les performances.
Comment corriger les violations
La violation peut être corrigée soit manuellement, soit dans certains cas à l’aide d’actions rapides pour corriger le code dans Visual Studio. Exemples :
Exemple 1
Appels de StringBuilder.Append
avec un littéral de chaîne de longueur d’unité :
using System;
using System.Text;
namespace TestNamespace
{
class TestClass
{
private void TestMethod()
{
StringBuilder sb = new StringBuilder();
sb.Append("a");
}
}
}
Conseil
Un correctif de code est disponible pour cette règle dans Visual Studio. Pour l’utiliser, positionnez le curseur sur la violation et appuyez sur Ctrl+. (point). Choisissez Envisager d’utiliser « StringBuilder.Append(char) » le cas échéant dans la liste des options présentées.
Correctif appliqué par Visual Studio :
using System;
using System.Text;
namespace TestNamespace
{
class TestClass
{
private void TestMethod()
{
StringBuilder sb = new StringBuilder();
sb.Append('a');
}
}
}
Dans certains cas, par exemple lors de l’utilisation d’un champ de classe de longueur d’unité const string
, un correctif de code n’est pas suggéré par Visual Studio (l’analyseur se déclenche toutefois). Ces instances nécessitent un correctif manuel.
Exemple 2
Appels de StringBuilder.Append
avec un champ de classe de longueur d’unité const string
:
using System;
using System.Text;
namespace TestNamespace
{
public class Program
{
public const string unitString = "a";
static void Main(string[] args)
{
StringBuilder sb = new StringBuilder();
sb.Append(unitString);
}
}
}
Après une analyse minutieuse, unitString
ici peut être remplacé par char
sans entraîner d’erreurs de build.
using System;
using System.Text;
namespace TestNamespace
{
public class Program
{
public const char unitString = 'a';
static void Main(string[] args)
{
StringBuilder sb = new StringBuilder();
sb.Append(unitString);
}
}
}
Quand supprimer les avertissements
Vous pouvez supprimer une violation de cette règle en toute sécurité si vous ne vous souciez pas de l’amélioration des performances lors de l’utilisation de StringBuilder
.
Supprimer un avertissement
Si vous voulez supprimer une seule violation, ajoutez des directives de préprocesseur à votre fichier source pour désactiver et réactiver la règle.
#pragma warning disable CA1834
// The code that's violating the rule is on this line.
#pragma warning restore CA1834
Pour désactiver la règle sur un fichier, un dossier ou un projet, définissez sa gravité sur none
dans le fichier de configuration.
[*.{cs,vb}]
dotnet_diagnostic.CA1834.severity = none
Pour plus d’informations, consultez Comment supprimer les avertissements de l’analyse de code.