我才意识到,在C#属性结构还可以与私人访问修饰符使用:是否有任何理由在C#中使用私有属性?
private string Password { get; set; }
尽管这在技术上是有趣的,我无法想象我会用它,因为一个私人领域涉及即使少仪式:
private string _password;
,当我会永远需要是我无法想象能够内部得到但不设置或设置但不得到私有字段:
private string Password { get; }
或
private string Password { set; }
但也许有一个用例与嵌套/继承类或可能在哪里一个get/set可能包含逻辑,而不仅仅是回馈属性的值,尽管我倾向于保持属性的严格性,并让显式方法执行任何逻辑操作。 GetEncodedPassword()
。
有没有人在C#中使用私有属性是出于任何原因,还是仅仅是那些技术上可行但很少使用的实际代码构造?
附录
尼斯的答案,通过他们读我宰杀这些用途为私人性质:
- 当私人领域需要延迟加载
- 当私人领域需要额外的逻辑或计算值
- 由于专用字段可能难以调试
- 为了“向您自己提交合同”
- 在内部转换/简化公开的属性序列化
- 包装全局变量的一部分,你的类
“私人字符串密码{get;}”甚至不合法的C#。它不会编译。 – 2010-07-22 15:17:53
@eric true,它会得到错误“... Password.get'必须声明一个实体,因为它没有标记为抽象或外部自动实现的属性必须同时定义get和set访问器。我只是假定它会工作,因为我使用'公共字符串密码{得到{返回_密码;经常。 – 2010-07-22 15:30:18
私人财产鼓励的技术是*自封装* - 请参阅:http://sourcemaking.com/refactoring/self-encapsulate-field – LBushkin 2010-07-22 18:30:10