只写属性(Write-Only Property)
只有set访问器、没有get访问器的属性称为只写属性。这类属性只能被赋值,不能被读取,通常用于对敏感数据(如密码、密钥)做单向写入的场景。
语法结构
只写属性的基本语法如下:
<访问修饰符> 数据类型 属性名 { set { /* 赋值逻辑 */ } }其中set访问器内部通过隐式参数value接收外部传入的值。
使用特点
定义了只写属性后,就只能通过该属性赋值,而不能从中取值。若在外部尝试读取该属性,编译器会直接报错,从而在语言层面保证数据不被反向读取。
代码示例
下面示例中,Sex属性只提供set访问器,外部只能写入,无法读取:
private int _sex; public int Sex { set { _sex = value; } }调用时只能执行obj.Sex = 1;这样的赋值操作;写成int s = obj.Sex;则无法通过编译。
使用建议
- 适用场景:密码、令牌等只需写入、不应被读取的字段。
- 注意可维护性:只写属性无法回读校验,调试和排查问题相对不便,非必要不建议滥用。
- 替代方案:若只是限制外部访问,可考虑使用私有字段配合方法封装,语义更清晰。