介绍
C# 属性,对 字段 的封装,通过 get 和 set 访问器控制读写行为。提供了一种更安全的方式来访问和修改字段的值。
作用
保护字段的访问,添加逻辑(如验证、计算)。
本质
本质是方法(编译器生成get_X和set_X方法)。
访问权限
可独立设置get和set的可见性。
Java程序员理解
C# 的 字段,相当于Java的 属性 或 成员变量
C# 的 属性,与Java的属性不是一个意思。其作用相当于 Java成员变量的 setter 和 getter 方法
完整写法
- 定义私有
字段,如:name,开头字母一般小写 - 定义
属性,注意: 属性名与 字段名不同,否则会有问题,如:Name,开头字母一般大写
// 定义私有字段
private string name;
// 定义属性
public string Name
{
get { return name; }
set { name = value; } // value表示外部传入的值
}
解释:
Name:属性封装了私有字段nameget:访问器用于获取字段值set:访问器用于设置字段值,value表示外部传入的值
简化写法
自动实现的属性
编译器会自动为 Name 属性生成一个私有的匿名字段来存储值
public string Name { get; set; }
设置值:
Name = "李雷";
获取值:
string s = Name;
设置初始值
public string Name { get; set; } = "李雷";
只可读
注意:下面的写法是只能获取,无法设置值,即使在本类中也不能设置值
public string Name { get; }
本类中可写,外部可读
public string Name { get; private set;}
参考:
https://www.runoob.com/csharp/csharp-property.html
https://blog.csdn.net/qq_39847278/article/details/145626638