.NET 10 & C# 14 New Features 新增功能介绍-field关键字
上篇文章给大家分享了
.NET 10 & C# 14 New Features 新增功能介绍-扩展成员Extension Members
今天给大家继续分享field关键字
在 C# 14 中,引入了新的上下文关键字 field,用于在自动属性(auto-property)的访问器中直接访问编译器生成的隐藏 backing field(后备字段)。
这解决了一个长期存在的问题:
自动属性如果需要在 set 中做校验或增强逻辑,就必须手动声明一个私有字段。
主要价值:field 允许你在属性的 get / set 访问器内部,直接访问自动生成的隐藏字段,而不需要手写私有变量。
一、代码示例
① 传统写法:
需要手动声明 _age。
private int _age; public int Age { get => _age; set { if (value < 0) throw new ArgumentException(); _age = value; } }
② 使用filed关键字
public int Age { get => field; set { if (value < 0) throw new ArgumentException(); field = value; } }
这个语法糖:
- 不需要声明 _age
- 语义更清晰
- 减少样板代码
二、典型应用场景
带校验的自动属性
public string Name { get => field; set => field = string.IsNullOrWhiteSpace(value) ? throw new ArgumentException("Name cannot be empty") : value; }
修改值后做额外处理
public int Score { get => field; set { field = value; OnScoreChanged(); } }
限制最大最小值
public int Percentage { get => field; set => field = Math.Clamp(value, 0, 100); }
三、底层技术原理
编译器仍然生成类似:
private int <Age>k__BackingField;
field 本质是对这个隐藏字段的语法糖访问。
IL 不变,只有语法层增强。
field 关键字本质是:
让自动属性可以“半升级”为带逻辑的属性,而不丢失简洁性。
以上分享给大家。
周国庆
20260223
浙公网安备 33010602011771号