CA2221: 종료자는 protected여야 합니다.
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