Ask Learn
Preview
Please sign in to use this experience.
Sign inThis browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
TypeName |
FinalizersShouldBeProtected |
CheckId |
CA2221 |
Category |
Microsoft.Usage |
Breaking Change |
NonBreaking |
A public type implements a finalizer that does not specify family (protected) access.
Finalizers must use the family access modifier. This rule is enforced by the C#, Visual Basic, and Visual C++ compilers.
To fix a violation of this rule, change the finalizer to be family-accessible.
Do not exclude a warning from this rule.
This rule cannot be violated in any high-level .NET language; it can be violated if you are writing 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
Implementing Finalize and Dispose to Clean Up Unmanaged Resources
Please sign in to use this experience.
Sign in