CA2221:终结器应受到保护

类型名

FinalizersShouldBeProtected

CheckId

CA2221

类别

Microsoft.Usage

是否重大更改

原因

公共类型实现的终结器未指定族(受保护)访问。

规则说明

终结器必须使用族访问修饰符。 该规则由 C#、Visual Basic 和 Visual C++ 编译器强制实施。

如何解决冲突

要修复与该规则的冲突,请将终结器更改为可进行族访问。

何时禁止显示警告

不要禁止显示此规则发出的警告。

示例

在任何高级 .NET 语言中,都不能与该规则冲突;如果编写 Microsoft 中间语言,则可以与该规则冲突。

// =============== 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 以清理非托管资源