Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
| 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 10 | 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.