CA1821: Üres véglegesítők eltávolítása
Tulajdonság | Érték |
---|---|
Szabályazonosító | CA1821 |
Cím | Üres véglegesítők eltávolítása |
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 | Javaslatként |
Ok
Egy típus üres véglegesítőt implementál, csak az alaptípus-véglegesítőt hívja meg, vagy csak feltételesen kibocsátott metódusokat hív meg.
Szabály leírása
Amikor csak lehetséges, kerülje a véglegesítőket az objektum élettartamának nyomon követésével járó többletterhelés miatt. A szemétgyűjtő futtatja a véglegesítőt, mielőtt összegyűjtené az objektumot. Ez azt jelenti, hogy legalább két gyűjteményre van szükség az objektum gyűjtéséhez. Az üres véglegesítő ezt a többletterhelést minden előny nélkül átterjedi.
Szabálysértések kijavítása
Távolítsa el az üres véglegesítőt. Ha a hibakereséshez véglegesítőre van szükség, a teljes véglegesítőt irányelvekbe #if DEBUG / #endif
kell ágyazni.
Mikor kell letiltani a figyelmeztetéseket?
Ne tiltsa le a szabályból származó üzeneteket.
Példa
Az alábbi példa egy eltávolítandó üres véglegesítőt, egy irányelvekbe #if DEBUG / #endif
foglalt véglegesítőt és az #if DEBUG / #endif
irányelveket helyesen használó véglegesítőt mutat be.
public class Class1
{
// Violation occurs because the finalizer is empty.
~Class1()
{
}
}
public class Class2
{
// Violation occurs because Debug.Fail is a conditional method.
// The finalizer will contain code only if the DEBUG directive
// symbol is present at compile time. When the DEBUG
// directive is not present, the finalizer will still exist, but
// it will be empty.
~Class2()
{
Debug.Fail("Finalizer called!");
}
}
public class Class3
{
#if DEBUG
// Violation will not occur because the finalizer will exist and
// contain code when the DEBUG directive is present. When the
// DEBUG directive is not present, the finalizer will not exist,
// and therefore not be empty.
~Class3()
{
Debug.Fail("Finalizer called!");
}
#endif
}
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: