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