Les finaliseurs doivent être protégés
Mise à jour : novembre 2007
TypeName |
FinalizersShouldBeProtected |
CheckId |
CA2221 |
Catégorie |
Microsoft.Usage |
Modification avec rupture |
Modification sans rupture |
Cause
Un type public implémente un finaliseur qui ne spécifie pas d'accès family (protégé).
Description de la règle
Les finaliseurs doivent utiliser le modificateur d'accès family. Cette règle est appliquée par les compilateurs C#, Visual Basic et Visual C++.
Comment corriger les violations
Pour corriger une violation de cette règle, modifiez le finaliseur pour le doter d'un accès family.
Quand supprimer les avertissements
Ne supprimez aucun avertissement de cette règle.
Exemple
Cette règle ne peut pas être violée dans un langage .NET de niveau supérieur ; elle peut l'être si vous rédigez un code en 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
Voir aussi
Référence
Implémentation des méthodes Finalize et Dispose pour nettoyer des ressources non managées