Share via


CA1834: StringBuilder.Append(char) gebruiken voor tekenreeksen met één teken

Eigenschappen Weergegeven als
Regel-id CA1834
Titel StringBuilder.Append(char) gebruiken voor tekenreeksen met één teken
Categorie Prestaties
Oplossing is brekend of niet-brekend Niet-brekend
Standaard ingeschakeld in .NET 9 Als suggestie

Oorzaak

Deze regel wordt geactiveerd wanneer een tekenreeks voor de lengte van een eenheid wordt doorgegeven aan de Append methode.

Beschrijving van regel

Bij het aanroepen StringBuilder.Append met een tekenreeks voor eenheidlengte kunt u overwegen een const char in plaats van een eenheidslengte const string te gebruiken om de prestaties te verbeteren.

Schendingen oplossen

De schending kan handmatig worden opgelost, of in sommige gevallen met snelle acties om code in Visual Studio op te lossen. Voorbeelden:

Voorbeeld 1

Aanroepen van StringBuilder.Append met een letterlijke tekenreekslengte van eenheid:

using System;
using System.Text;

namespace TestNamespace
{
    class TestClass
    {
        private void TestMethod()
        {
            StringBuilder sb = new StringBuilder();
            sb.Append("a");
        }
    }
}

Tip

Er is een codeoplossing beschikbaar voor deze regel in Visual Studio. Als u deze wilt gebruiken, plaatst u de cursor op de schending en drukt u op Ctrl+. (punt). Kies Overweeg het gebruik van 'StringBuilder.Append(char)' indien van toepassing. In de lijst met opties die worden weergegeven.

Codefix voor CA1834 - StringBuilder.Append(char) gebruiken voor tekenreeksen met één teken

Oplossing toegepast door Visual Studio:

using System;
using System.Text;

namespace TestNamespace
{
    class TestClass
    {
        private void TestMethod()
        {
            StringBuilder sb = new StringBuilder();
            sb.Append('a');
        }
    }
}

In sommige gevallen wordt bijvoorbeeld bij het gebruik van een const string veld lengteklasse voor eenheden een code-fix niet voorgesteld door Visual Studio (maar de analyse wordt nog steeds geactiveerd). Voor deze exemplaren is een handmatige oplossing vereist.

Voorbeeld 2

Aanroepen van StringBuilder.Append met een const string klasseveld van eenheidlengte:

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);
        }
    }
}

Na zorgvuldige analyse unitString kunt u hier worden gewijzigd in een char fout zonder dat er buildfouten optreden.

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);
        }
    }
}

Wanneer waarschuwingen onderdrukken

Het is veilig om een schending van deze regel te onderdrukken als u zich geen zorgen maakt over het verbeteren van de prestaties bij gebruik StringBuilder.

Een waarschuwing onderdrukken

Als u slechts één schending wilt onderdrukken, voegt u preprocessorrichtlijnen toe aan uw bronbestand om de regel uit te schakelen en vervolgens opnieuw in te schakelen.

#pragma warning disable CA1834
// The code that's violating the rule is on this line.
#pragma warning restore CA1834

Als u de regel voor een bestand, map of project wilt uitschakelen, stelt u de ernst none ervan in op het configuratiebestand.

[*.{cs,vb}]
dotnet_diagnostic.CA1834.severity = none

Zie Codeanalysewaarschuwingen onderdrukken voor meer informatie.

Zie ook