C# 编程:属性初始化、模式匹配与 LINQ 应用
一、属性初始化与记录类型
1.1 属性初始化接管
在某些情况下,我们需要接管属性的声明并负责其值的初始化。例如:
public int ID { get; } = ID;
这里加粗的 ID 指的是主构造函数参数,而非 ID 属性。当接管属性声明后,主构造函数不再自动初始化属性值,这与类或结构体中定义主构造函数的行为一致。主构造函数参数对所有字段和属性初始化器都是可见的。
我们也可以使用显式访问器接管属性定义:
int _id = ID;
public int ID { get => _id; init => _id = value; }
同样,这里的 ID 是主构造函数参数。不过,由于必须用 ID 初始化 _id 属性,这种“接管”方式的实用性会降低,因为主构造函数会绕过 init 访问器中的逻辑(如验证)。
1.2 记录类型与相等性比较
记录类型(Records)和结构体、匿名类型、元组一样,天生支持结构相等性。即如果两个记录的字段(和自动属性)相等,那么这两个记录相等:
v
超级会员免费看
订阅专栏 解锁全文
1208

被折叠的 条评论
为什么被折叠?



