8

为什么是这样:

    public string Foo {get;set;}

认为比这更好:

    public string Foo;

我这辈子都搞不定。任何人都可以解释一下吗?

谢谢

4

2 回答 2

12

因为您可以透明地(从客户端代码的角度)更改 setter/getter 的实现,而您不能这样做,如果您直接公开底层属性(因为它不会是二进制兼容的。)

但是,与自动属性相关的代码有一定的异味,因为它们使暴露类状态的某些部分变得非常容易,无需多加考虑。Java 也遇到了这种情况,在许多项目中,您会发现get/setXxx到处都是暴露内部状态的对(通常不需要它,“以防万一”),这使得属性基本上是公开的。

于 2010-08-02T08:46:15.090 回答
1

字段的用途是对象状态存储,而属性的用途仅仅是访问。区别可能更多是概念性的而不是实际的,但自动属性提供了一种方便的语法来声明两者。

于 2010-08-02T10:09:17.230 回答