다음을 통해 공유


종료자는 protected여야 합니다.

업데이트: 2007년 11월

TypeName

FinalizersShouldBeProtected

CheckId

CA2221

범주

Microsoft.Usage

변경 수준

주요 변경 아님

원인

public 형식이 패밀리(protected) 액세스를 지정하지 않는 종료자를 구현합니다.

규칙 설명

종료자에서는 패밀리 액세스 한정자를 사용해야 합니다. 이 규칙은 C#, Visual Basic 및 Visual C++ 컴파일러를 통해 적용됩니다.

위반 문제를 해결하는 방법

이 규칙 위반 문제를 해결하려면 패밀리 액세스가 가능하도록 종료자를 변경합니다.

경고를 표시하지 않는 경우

이 규칙에서는 경고를 표시해야 합니다.

예제

높은 수준의 .NET 언어에서는 이 규칙이 위반되지 않습니다. 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

참고 항목

참조

Finalize 및 Dispose를 구현하여 관리되지 않는 리소스 정리