不要声明可见实例字段

更新:2007 年 11 月

TypeName

DoNotDeclareVisibleInstanceFields

CheckId

CA1051

类别

Microsoft.Design

是否重大更改

原因

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

规则说明

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

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

如何修复冲突

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

何时禁止显示警告

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

示例

下面的示例演示与该规则冲突的类型 (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 ; }
      }
   }
}

相关规则

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

请参见

概念

链接要求