Dav*_*vid 8 .net properties automatic-properties
为什么是这样:
public string Foo {get;set;}
Run Code Online (Sandbox Code Playgroud)
被认为比这更好:
public string Foo;
Run Code Online (Sandbox Code Playgroud)
我不能为我的生活而努力.任何人都能解释一下吗?
谢谢
Dir*_*irk 12
因为您可以透明地(从客户端代码的角度)更改setter/getter的实现,如果直接公开底层属性(因为它不是二进制兼容的),则无法执行相同的操作.
但是,有一些与自动属性相关的代码气味,因为它们很容易暴露出你的类状态的某些部分,而不需要再考虑.这也遭遇了Java,在许多项目中,你会发现get/setXxx所有的对都暴露出内部状态(通常不需要它,"以防万一"),这使得属性基本上是公开的.