Megosztás a következőn keresztül:


CA1863: A "CompositeFormat" használata

Tulajdonság Érték
Szabályazonosító CA1863
Cím Használja a következő parancsot: CompositeFormat
Kategória Teljesítmény
A javítás kompatibilitástörő vagy nem törik Nem törés
Alapértelmezés szerint engedélyezve a .NET 8-ban Nem

Ok

Kódhívások String.Format(String, Object[]) vagy StringBuilder.AppendFormat(String, Object[]) egy olyan formátumsztring static , amely nem lett gyorsítótárazva egy CompositeFormat példányon.

Szabály leírása

A formátumsztringek futásidőben történő elemzése költséges. Ez a szabály olyan helyeket keres a kódban, ahol az eredeti formátumsztring helyett egy példányt gyorsítótárazhat és használhat CompositeFormat argumentumként egy formázási művelethez. A CompositeFormat példányok a létrehozásukkor elemzik az összetett formátumú sztringet, ami azt jelenti, hogy a sztringformázás "gyakori elérési útja" sokkal gyorsabban végrehajtható.

Szabálysértések kijavítása

Hozzon létre egy példányt CompositeFormat hívással CompositeFormat.Parse(String) , és adja át String.Format(IFormatProvider, CompositeFormat, Object[])StringBuilder.AppendFormat(IFormatProvider, CompositeFormat, Object[]) az eredeti formátumsztring helyett.

Példa

Az alábbi példa a szabály két szabálysértést mutat be:

class C
{
    private static readonly string StaticField = "Format one value: {0}";

    static void Main()
    {
        _ = string.Format(StaticField, 42);

        StringBuilder sb = new();
        sb.AppendFormat(StaticField, 42);
    }
}

Az alábbi példa mindkét szabálysértést kijavító kódot mutatja be:

class C
{
    private static readonly CompositeFormat StaticField = CompositeFormat.Parse("Format one value: {0}");

    static void Main()
    {
        _ = string.Format(null, StaticField, 42);

        StringBuilder sb = new();
        sb.AppendFormat(null, StaticField, 42);
    }
}

Mikor kell letiltani a figyelmeztetéseket?

Ha a teljesítmény nem okoz gondot, nyugodtan letilthatja a diagnosztika használatát ebből a szabályból.

Figyelmeztetés mellőzése

Ha csak egyetlen szabálysértést szeretne letiltani, adjon hozzá előfeldolgozási irányelveket a forrásfájlhoz a szabály letiltásához és újbóli engedélyezéséhez.

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

Ha le szeretné tiltani egy fájl, mappa vagy projekt szabályát, állítsa annak súlyosságát none a konfigurációs fájlban.

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

További információ: Kódelemzési figyelmeztetések letiltása.