为什么:
public string Foo {get;set;}
被认为比这更好:
public string Foo;
我不能为我的生活而努力。任何人都能解释一下吗?
由于
答案 0 :(得分:12)
因为您可以透明地(从客户端代码的角度)更改setter / getter的实现,所以如果直接公开底层属性(因为它不是二进制兼容的),则不能这样做。
但是,自动属性存在一定的代码气味,因为它们可以很容易地在不经过深思熟虑的情况下暴露你的类状态的某些部分。这也遭遇了Java,在许多项目中,你会发现get/setXxx
遍布整个地方,暴露内部状态(通常不需要它,“以防万一”),这使得属性基本上是公开的。
答案 1 :(得分:1)
虽然字段的目的是对象状态存储,但属性的目的仅仅是访问 。差异可能更具概念性而非实际,但自动属性为声明两者提供了方便的语法。