Udostępnij za pośrednictwem


CA1834: Użyj StringBuilder.Append(char) dla ciągów składających się z jednego znaku

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 kodu dla CA1834 — używanie StringBuilder.Append(char) dla pojedynczych znaków

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.

Zobacz też