CA1830: Föredra starkt typade metodöverlagringar för Append och Insert i StringBuilder

Egenskap Värde
Regel-ID CA1830
Title Föredrar starkt typinskrivna överlagringar av tilläggs- och infoga-metoden på StringBuilder
Kategori Prestanda
Korrigeringen är antingen invasiv eller icke-invasiv Oumbrytbar
Aktiverad som standard i .NET 10 Som förslag
Tillämpliga språk C# och Visual Basic

Orsak

En StringBuilderAppend-metod eller Insert anropades med ett argument som var resultatet av att anropa ToString på en typ för vilken Append-metoden eller Insert har en speciell överlagring.

Regelbeskrivning

Append och Insert ger överlagringar för flera typer utöver String. När det är möjligt, föredra starkt typade överlagringar framför att använda ToString() och strängbaserade överlagringar.

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