Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
| 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 łamiąca lub nienaruszająca | Niezgodność |
| Domyślnie włączone na platformie .NET 10 | Jako sugestia |
| Zastosowane języki | C# i Visual Basic |
Przyczyna
Ta reguła jest uruchamiana, gdy ciąg znaków o długości jednostki jest przekazywany do metody Append.
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 ze stringiem literału o jednej jednostce długości:
using System;
using System.Text;
namespace TestNamespace
{
class TestClass
{
private void TestMethod()
{
StringBuilder sb = new StringBuilder();
sb.Append("a");
}
}
}
Wskazówka
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 przy użyciu pola klasy o długości jednostkowej const string, Visual Studio nie sugeruje poprawki kodu (chociaż analizator nadal działa). Te wystąpienia wymagają ręcznej poprawki.
Przykład 2
Wywołania StringBuilder.Append z polem const string klasy o długości jednostkowej:
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 tu zmienić na char bez 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.