Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
| Property | Värde |
|---|---|
| Regel-ID | CA1830 |
| Title | Föredrar starkt typinskrivna överlagringar av tilläggs- och infoga-metoden på StringBuilder |
| Kategori | Prestanda |
| Korrigeringen är icke-bakåtkompatibel | Icke-icke-bryta |
| Aktiverad som standard i .NET 9 | Som förslag |
Orsak
En StringBuilderAppend eller-metod Insert anropades med ett argument som var resultatet av att anropa ToString på en typ som Append metoden eller Insert har en dedikerad överbelastning för.
Regelbeskrivning
Append och Insert ger överlagringar för flera typer utöver String. När det är möjligt föredrar du de starkt skrivna överlagringarna framför att använda ToString() och den strängbaserade överbelastningen.
Så här åtgärdar du överträdelser
Ta bort onödiga ToString() från anropet.
using System.Text;
class C
{
int _value;
// Violation
public void Log(StringBuilder destination)
{
destination.Append("Value: ").Append(_value.ToString()).AppendLine();
}
// Fixed
public void Log(StringBuilder destination)
{
destination.Append("Value: ").Append(_value).AppendLine();
}
}
När du ska ignorera varningar
Det är säkert att förhindra en överträdelse av den här regeln om du inte bryr dig om prestandapåverkan från onödiga strängallokeringar.
Ignorera en varning
Om du bara vill förhindra en enda överträdelse lägger du till förprocessordirektiv i källfilen för att inaktivera och aktiverar sedan regeln igen.
#pragma warning disable CA1830
// The code that's violating the rule is on this line.
#pragma warning restore CA1830
Om du vill inaktivera regeln för en fil, mapp eller ett projekt anger du dess allvarlighetsgrad till none i konfigurationsfilen.
[*.{cs,vb}]
dotnet_diagnostic.CA1830.severity = none
Mer information finns i Så här utelämnar du kodanalysvarningar.