Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
| 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.
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.