Udostępnij za pośrednictwem


CA2221: Finalizatory powinny być chronione

TypeName

FinalizersShouldBeProtected

CheckId

CA2221

Kategoria

Microsoft.Usage

Zmiana kluczowa

Niekluczowa

Przyczyna

Typ publiczny implementuje finalizatory, które nie określają dostępu family (chronionego).

Opis reguły

Finalizatory należy użyć modyfikatora dostępu "family".Ta reguła jest wymuszane przez kompilatory C#, Visual Basic i Visual C++.

Jak naprawić naruszenia

Aby usunąć naruszenie tej reguły, należy zmienić finalizator na dostępny dla rodziny.

Kiedy pominąć ostrzeżenia

Nie należy pomijać ostrzeżenia dotyczącego tej reguły.

Przykład

Ta reguła nie może być naruszona w żadnym języku wysokiego poziomu .NET; może być naruszona w 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

Zobacz też

Inne zasoby

Implementing Finalize and Dispose