我刚刚意识到C#属性构造也可以与私有访问修饰符一起使用:
private string Password { get; set; }
尽管从技术上讲这很有趣,但是我无法想象何时使用它,因为私有字段甚至仪式更少:
private string _password;
而且我无法想象何时需要内部获取但不设置或设置但不设置获取私有字段:
private string Password { get; }
要么
private string Password { set; }
但是也许有一个带有嵌套/继承类的用例,或者一个get / set可能包含逻辑而不是仅仅返回属性的值,尽管我倾向于使属性严格简单,让显式方法执行任何逻辑,例如GetEncodedPassword()
。
是否有人出于某种原因在C#中使用私有属性,还是仅仅是在技术上实际上尚未实际使用的代码构造之一?
附录
不错的答案,仔细阅读它们,我便剔除了私人财产的这些用途:
- 当需要延迟加载私有字段时
- 当专用字段需要额外的逻辑或为计算值时
- 因为私有字段可能很难调试
- 为了“向自己出示合同”
- 在内部转换/简化公开属性作为序列化的一部分
- 包装全局变量以在您的类中使用