Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
TypeName |
FinalizersShouldBeProtected |
CheckId |
CA2221 |
Category |
Microsoft.Usage |
Breaking Change |
NonBreaking |
Cause
A public type implements a finalizer that does not specify family (protected) access.
Rule Description
Finalizers must use the family access modifier. This rule is enforced by the C#, Visual Basic, and Visual C++ compilers.
How to Fix Violations
To fix a violation of this rule, change the finalizer to be family-accessible.
When to Exclude Warnings
Do not exclude a warning from this rule.
Example
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
See Also
Reference
Implementing Finalize and Dispose to Clean Up Unmanaged Resources