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.
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: