更新: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 ; }
      }
   }
}