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.
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.