Share via


CA1830: Föredrar starkt skrivna överlagringar av tilläggs- och infoga-metoden på StringBuilder

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 8 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.

Se även