CA1834: Użyj ciąguBuilder.Append(char) dla ciągów jednoznakowych
Właściwości | Wartość |
---|---|
Identyfikator reguły | CA1834 |
Tytuł | Użyj StringBuilder.Append(char) dla ciągów z pojedynczym znakiem |
Kategoria | Wydajność |
Poprawka powodująca niezgodność lub niezgodność | Niezgodność |
Domyślnie włączone na platformie .NET 9 | Jako sugestia |
Przyczyna
Ta reguła jest uruchamiana, gdy ciąg długości jednostki jest przekazywany do Append metody .
Opis reguły
Podczas wywoływania StringBuilder.Append
za pomocą ciągu długości jednostki rozważ użycie const char
zamiast długości const string
jednostki w celu zwiększenia wydajności.
Jak naprawić naruszenia
Naruszenie można naprawić ręcznie lub, w niektórych przypadkach, za pomocą szybkich akcji w celu naprawienia kodu w programie Visual Studio. Przykłady:
Przykład 1
Wywołania elementu StringBuilder.Append
z literałem ciągu długości jednostki:
using System;
using System.Text;
namespace TestNamespace
{
class TestClass
{
private void TestMethod()
{
StringBuilder sb = new StringBuilder();
sb.Append("a");
}
}
}
Napiwek
Poprawka kodu jest dostępna dla tej reguły w programie Visual Studio. Aby go użyć, umieść kursor na naruszeniu i naciśnij Ctrl+. (kropka). Wybierz pozycję Rozważ użycie opcji "StringBuilder.Append(char)", jeśli ma to zastosowanie. Z listy przedstawionych opcji.
Poprawka zastosowana przez program Visual Studio:
using System;
using System.Text;
namespace TestNamespace
{
class TestClass
{
private void TestMethod()
{
StringBuilder sb = new StringBuilder();
sb.Append('a');
}
}
}
W niektórych przypadkach, na przykład w przypadku używania pola klasy długości const string
jednostki poprawka kodu nie jest sugerowana przez program Visual Studio (ale analizator nadal jest uruchamiany). Te wystąpienia wymagają ręcznej poprawki.
Przykład 2
Wywołania StringBuilder.Append
obiektu z polem const string
klasy o długości jednostki:
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 starannej analizie unitString
można zmienić element na bez char
powodowania błędów kompilacji.
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);
}
}
}
Kiedy pomijać ostrzeżenia
Można bezpiecznie pominąć naruszenie tej reguły, jeśli nie martwisz się o poprawę wydajności podczas korzystania z usługi StringBuilder
.
Pomijanie ostrzeżenia
Jeśli chcesz po prostu pominąć pojedyncze naruszenie, dodaj dyrektywy preprocesora do pliku źródłowego, aby wyłączyć, a następnie ponownie włączyć regułę.
#pragma warning disable CA1834
// The code that's violating the rule is on this line.
#pragma warning restore CA1834
Aby wyłączyć regułę dla pliku, folderu lub projektu, ustaw jego ważność na none
w pliku konfiguracji.
[*.{cs,vb}]
dotnet_diagnostic.CA1834.severity = none
Aby uzyskać więcej informacji, zobacz Jak pominąć ostrzeżenia dotyczące analizy kodu.