CA2221: I finalizzatori devono essere protetti
TypeName |
FinalizersShouldBeProtected |
CheckId |
CA2221 |
Category |
Microsoft.Usage |
Breaking Change |
Non sostanziale |
Causa
Un tipo pubblico implementa un finalizzatore che non specifica l'accesso a livello di famiglia (protetto).
Descrizione della regola
I finalizzatori devono utilizzare il modificatore di accesso a livello di famiglia. Questa regola è applicata dai compilatori C#, Visual Basic e Visual C++.
Come correggere le violazioni
Per correggere una violazione di questa regola, modificare il finalizzatore affinché sia accessibile a livello di famiglia.
Esclusione di avvisi
Non escludere un avviso da questa regola.
Esempio
Questa regola non può essere violata in alcun linguaggio .NET di livello elevato; può essere violata se si scrive in MSIL (Microsoft Intermediate Language).
// =============== CLASS MEMBERS DECLARATION ===================
// note that class flags, 'extends' and 'implements' clauses
// are provided here for information only
.namespace UsageLibrary
{
.class public auto ansi beforefieldinit FinalizeMethodNotProtected
extends [mscorlib]System.Object
{
.method public hidebysig instance void
Finalize() cil managed
{
// Code size 1 (0x1)
.maxstack 0
IL_0000: ret
} // end of method FinalizeMethodNotProtected::Finalize
.method public hidebysig specialname rtspecialname
instance void .ctor() cil managed
{
// Code size 7 (0x7)
.maxstack 1
IL_0000: ldarg.0
IL_0001: call instance void [mscorlib]System.Object::.ctor()
IL_0006: ret
} // end of method FinalizeMethodNotProtected::.ctor
} // end of class FinalizeMethodNotProtected
} // end of namespace
Vedere anche
Riferimenti
Implementazione dei metodi Finalize e Dispose per la pulizia delle risorse non gestite