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 ; }
}
}
}