CA1051:不要声明可见实例字段

类型名

DoNotDeclareVisibleInstanceFields

CheckId

CA1051

类别

Microsoft.Design

是否重大更改

原因

外部可见的类型具有外部可见的实例字段。

规则说明

字段的主要用途应是作为实现的详细信息。 字段应为 private 或 internal,并应当通过使用属性来公开。 访问属性和访问字段一样容易,且随着类型的功能扩展,无需引入间断更改即可更改属性的访问器中的代码。 仅返回私有或内部字段值的属性经过优化,可以像访问字段那样执行;在属性上使用外部可见字段不太会提高性能。

外部可见是指 public、protected 和 protected internal(在 Visual Basic 中为 Public、Protected 和 Protected Friend)可访问性级别。

如何解决冲突

要修复与该规则的冲突,请将字段设置为 private 或 internal,并使用外部可见属性公开它。

何时禁止显示警告

不要禁止显示此规则发出的警告。 外部可见字段不提供无法用于属性的任何好处。 另外,不能使用 链接需求 保护公共字段。 请参见CA2112:受保护的类型不应公开字段

示例

下面的示例显示了一个违反该规则的类型 (BadPublicInstanceFields)。 GoodPublicInstanceFields 显示更正的代码。

using System;

namespace DesignLibrary
{
   public class BadPublicInstanceFields
   {
      // Violates rule DoNotDeclareVisibleInstanceFields.
      public int instanceData = 32;
   }

   public class GoodPublicInstanceFields
   {
      private int instanceData = 32;

      public int InstanceData
      {
         get { return instanceData; }
         set { instanceData = value ; }
      }
   }
}

相关规则

CA2112:受保护的类型不应公开字段

请参见

概念

链接需求