1.7 KiB
1.7 KiB
成员属性
概念:
- 属性(Property)不是字段本身,而是==对字段的访问入口==
- 它看起来像变量,用起来也像变量,但本质上是特殊方法
- 属性常用于:读取、赋值、校验、限制访问
通常用法:
- 保护字段,不让外部随便乱改
- 在赋值或读取时加入逻辑
- 做“只能读”“只能类内改”“初始化后不可改”等控制
完整语法:
class Person
{
private string name;
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
}
案例:
class Person
{
private int age;
public int Age
{
get
{
return age;
}
set
{
if (value < 0)
{
age = 0;
return;
}
age = value;
}
}
}
Person p = new Person();
p.Age = -5;
Console.WriteLine(p.Age); // 0
说明:
get负责取值set负责赋值set里的value表示外部传入的新值
自动属性:
public string Name { get; set; }
public float Height { get; private set; }
public string Id { get; init; }
补充:
- 自动属性会由编译器生成隐藏的 backing field
private set表示外部能读、类内部能改init表示只能在创建对象时赋值
注意:
- ==
get中如果要返回值,就必须return== - 属性本身的访问级别看属性前面的修饰符
get/set可以单独再加更严格的访问修饰符,但不能比属性本身更开放- 只有
get没有set时是只读属性 - 只有
set没有get时是只写属性,但实际开发里很少这样写 - 属性不是普通变量,所以通常不能当
ref/out参数传入
#封装 #核心