属性暴露了字段。字段应该(几乎总是)保持为类的私有,并通过获取和设置属性来访问。属性提供了一个抽象的层次,允许你改变字段,同时不影响使用你的类的外部访问方式。
public class MyClass
{
// 这是字段. 类私有,存储数据
private string _myField;
// 这是属性,使用了内部字段,
public string MyProperty
{
get
{
return _myField;
}
set
{
_myField = value;
}
}
// 这是比较简短的语法,会自动为该属性创建一个私有字段
public int AnotherProperty { get; set; }
}
简单来说,属性是在字段上抽象了一层,允许添加自定逻辑,比如设置计算属性,只读,只写属性之类的。