CA1834: Pro řetězce s jedním znakem použijte StringBuilder.Append(char)
Vlastnost | Hodnota |
---|---|
ID pravidla | CA1834 |
Název | Pro jednoznakové řetězce používat metodu StringBuilder.Append(char) |
Kategorie | Výkon |
Oprava způsobující chybu nebo chybu způsobující chybu | Nenarušující |
Povoleno ve výchozím nastavení v .NET 9 | Jako návrh |
Příčina
Toto pravidlo se aktivuje při předání řetězce délky jednotky metodě Append .
Popis pravidla
Při volání StringBuilder.Append
s řetězcem délky jednotek zvažte použití const char
namísto délky const string
jednotky ke zlepšení výkonu.
Jak opravit porušení
Porušení může být buď opraveno ručně, nebo v některých případech pomocí rychlých akcí opravit kód v sadě Visual Studio. Příklady:
Příklad 1
Vyvolání StringBuilder.Append
s řetězcovým literálem délky jednotky:
using System;
using System.Text;
namespace TestNamespace
{
class TestClass
{
private void TestMethod()
{
StringBuilder sb = new StringBuilder();
sb.Append("a");
}
}
}
Tip
Oprava kódu je k dispozici pro toto pravidlo v sadě Visual Studio. Pokud ho chcete použít, umístěte kurzor na porušení a stiskněte ctrl+. (tečka). Pokud je to možné, zvolte Možnost Zvážit použití StringBuilder.Append(char). V seznamu zobrazených možností.
Oprava použitá sadou Visual Studio:
using System;
using System.Text;
namespace TestNamespace
{
class TestClass
{
private void TestMethod()
{
StringBuilder sb = new StringBuilder();
sb.Append('a');
}
}
}
V některých případech například při použití pole třídy délky const string
jednotek není v sadě Visual Studio navržena oprava kódu (ale analyzátor se stále aktivuje). Tyto instance vyžadují ruční opravu.
Příklad 2
Vyvolání StringBuilder.Append
pole třídy s délkou const string
jednotky:
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);
}
}
}
Po pečlivé analýze je možné tento postup unitString
změnit na bez char
jakýchkoli chyb sestavení.
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);
}
}
}
Kdy potlačit upozornění
Je bezpečné potlačit porušení tohoto pravidla, pokud vás nezajímá zlepšení výkonu při použití StringBuilder
.
Potlačení upozornění
Pokud chcete pouze potlačit jedno porušení, přidejte do zdrojového souboru direktivy preprocesoru, abyste pravidlo zakázali a znovu povolili.
#pragma warning disable CA1834
// The code that's violating the rule is on this line.
#pragma warning restore CA1834
Pokud chcete pravidlo pro soubor, složku nebo projekt zakázat, nastavte jeho závažnost v none
konfiguračním souboru.
[*.{cs,vb}]
dotnet_diagnostic.CA1834.severity = none
Další informace naleznete v tématu Jak potlačit upozornění analýzy kódu.