相关疑难解决方法(0)

有没有理由在C#中使用私有属性?

我刚刚意识到C#属性构造也可以与私有访问修饰符一起使用:

private string Password { get; set; }
Run Code Online (Sandbox Code Playgroud)

虽然这在技术上很有意思,但我无法想象何时使用它,因为私人领域涉及更少的仪式:

private string _password;
Run Code Online (Sandbox Code Playgroud)

我无法想象什么时候我需要能够内部获取但不能设置设置但不能获得私有字段:

private string Password { get; }
Run Code Online (Sandbox Code Playgroud)

要么

private string Password { set; }
Run Code Online (Sandbox Code Playgroud)

但也许有一个嵌套/继承类的用例,或者可能是get/set可能包含逻辑而不是仅仅返回属性的值,尽管我倾向于保持属性严格简单并让显式方法做任何逻辑,例如GetEncodedPassword().

是否有人出于任何原因在C#中使用私有属性,或者它只是那些技术上可能但很少使用的实际代码构造之一?

附录

很好的答案,阅读它们我剔除了私人财产的这些用途:

  • 私有字段需要延迟加载时
  • 私有字段需要额外逻辑或计算值时
  • 由于私有字段可能难以调试
  • 为了"向自己提出合同"
  • 在内部转换/简化公开属性作为序列化的一部分
  • 包装要在类中使用的全局变量

c# properties access-modifiers

227
推荐指数
11
解决办法
6万
查看次数

标签 统计

access-modifiers ×1

c# ×1

properties ×1