Partager via


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