属性是一个方法或一对方法,因此它并不能存储数据,在客户端代码鵇,它们是字段。
get与set是属性的两个访问器,是两个特殊的方法。前者用于读取,没有参数,后者用于写入,有一个隐含的参数value。
属性需要用于存储数据的字段,一般约定属性与其对应的字段用相同的单词,属性的第一个字母大写,字段的则小写。.NET Core团队转身用不用下划线作为字段的前缀,这是为了区分字段与局部变量。
// 写法一
class Test
{
private int _age;
public int Age
{
get { return _age; }
set { _age = value; }
}
}
// 写法二
class Test
{
private int _age;
public int Age
{
get => _age;
set => _age = value;
}
}
// 简化写法
class Test
{
public int Age
{ get; set; }
//或者直接省略
public int Name;
}
写法一和写法二显示地说明和类的字段age和属性Age,简化写法中只定义了属性Age,由系统的定义用于存储数据的字段。注意,字段与属性用在同的单词是约定,并不是强制要求,因此简化写法中字段名是不可知。下面代码定义属性并初始化。
class Test
{
public int Age { get; set; } = 42;
}