Freigeben über


CA1834: Verwenden von StringBuilder.Append(char) für Zeichenfolgen mit einem einzelnen Zeichen

Eigenschaft Wert
Regel-ID CA1834
Titel Verwenden von StringBuilder.Append(char) für Zeichenfolgen mit einem einzelnen Zeichen
Kategorie Leistung
Fix führt zu Unterbrechungen oder bleibt funktionsfähig Untrennbar
Standardmäßig in .NET 10 aktiviert Als Vorschlag
Anwendbare Sprachen C# und Visual Basic

Ursache

Diese Regel wird ausgelöst, wenn eine Zeichenfolge mit Einheitslänge an die Append-Methode übergeben wird.

Regelbeschreibung

Wenn Sie StringBuilder.Append mit einer einstelligen Zeichenfolge aufrufen, sollten Sie in Betracht ziehen, const char anstelle einer einstellig langen const string zu verwenden, um die Leistung zu verbessern.

So beheben Sie Verstöße

Der Verstoß kann entweder manuell behoben werden oder in einigen Fällen schnelle Aktionen zum Beheben von Code in Visual Studio verwenden. Beispiele:

Beispiel 1

Aufrufe von StringBuilder.Append mit einem Zeichenfolgenliteral der Einheitslänge:

using System;
using System.Text;

namespace TestNamespace
{
    class TestClass
    {
        private void TestMethod()
        {
            StringBuilder sb = new StringBuilder();
            sb.Append("a");
        }
    }
}

Tipp

Für diese Regel ist ein Codefix in Visual Studio verfügbar. Um es zu verwenden, positionieren Sie den Cursor auf dem Verstoß und drücken Sie STRG+. (Punkt). Wählen Sie aus der Liste der angezeigten Optionen Verwendung von „StringBuilder.Append(char)“ erwägen, falls angebracht aus.

Codefix für CA1834 - Verwenden von StringBuilder.Append(char) für Zeichenfolgen mit einem einzelnen Zeichen

Von Visual Studio angewendete Korrektur:

using System;
using System.Text;

namespace TestNamespace
{
    class TestClass
    {
        private void TestMethod()
        {
            StringBuilder sb = new StringBuilder();
            sb.Append('a');
        }
    }
}

In einigen Fällen, z. B. bei der Verwendung eines Klassenfelds mit fester Länge const string, wird von Visual Studio keine Code-Korrektur vorgeschlagen (aber das Analysetool wird weiterhin ausgelöst). Diese Instanzen erfordern eine manuelle Korrektur.

Beispiel 2

Aufrufe von StringBuilder.Append mit einem const string-Klassenattribut von einer Einheitslänge:

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);
        }
    }
}

Nach der sorgfältigen Analyse kann unitString hier zu char geändert werden, ohne dass Buildfehler entstehen.

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);
        }
    }
}

Wann sollten Warnungen unterdrückt werden?

Es ist sicher, einen Verstoß gegen diese Regel zu unterdrücken, wenn Sie sich keine Gedanken über die Verbesserung der Leistung machen, wenn Sie StringBuilder verwenden.

Unterdrücken einer Warnung

Um nur eine einzelne Verletzung zu unterdrücken, fügen Sie der Quelldatei Präprozessoranweisungen hinzu, um die Regel zu deaktivieren und dann wieder zu aktivieren.

#pragma warning disable CA1834
// The code that's violating the rule is on this line.
#pragma warning restore CA1834

Um die Regel für eine Datei, einen Ordner oder ein Projekt zu deaktivieren, legen Sie den Schweregrad auf none in der Konfigurationsdatei fest.

[*.{cs,vb}]
dotnet_diagnostic.CA1834.severity = none

Weitere Informationen finden Sie unter Vorgehensweise: Unterdrücken von Codeanalyse-Warnungen.

Siehe auch