property:它是一个方法或一对方法,在客户端代码看来,它(们)是一个字段。
class PhoneCustomer
{
private string _firstName;
public string FirstName
{
get { return _firstName; }
set { firstName = value; }
}
// etc.
}
get访问器不带任何参数,且必须返回属性声明的类型。
也不应为set访问器指定任何显式参数,但编译器假定它带一个参数,其类型也与属性相同,并表示为value。
**
下面的代码包含一个属性Age,它设置了一个字段age。
在这个例子中,age表示属性Age的后备变量。
private int age;
public int Age
{
get { return age; }
set { age = value; }
}
自动实现的属性
如果属性的set和get访问器中没有任何逻辑,就可以使用自动实现的属性。
实现方法:
public int Age { get; set; }
不需要声明私有字段。编译器会自动创建它。
使用自动实现的属性,就不能直接访问字段,因为不知道编译器生成的名称。
初始化
public int Age { get; set; } = 42;
属性的访问修饰符
C#允许给属性的get和set访问器设置不同的访问修饰符,所以属性可以有公有的get访问器和私有或受保护的set访问器。 :::danger 在get和set访问器中,必须有一个具备属性的访问级别。 :::
public string Name
{
get
{
return _name;
}
private set
{
_name = value;
}
}
通过自动实现的属性,也可以设置不同的访问级别:
public int Age { get; private set; }