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.

Code fix for CA1834 - Use StringBuilder.Append(char) for single character strings

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.

Voir aussi