使用属性有两个明显的优点:
- 如果以后需要额外的逻辑,则可以进行版本控制。向getter或setter添加逻辑不会破坏现有代码。
- 它允许数据绑定正常工作(大多数数据绑定框架不适用于字段)。
另外,几乎没有缺点。JIT编译器可以内联这样的简单,自动属性,因此没有理由不使用它们。
另外,您提到:
除了这些相当罕见的情况外,稍后将Foo更改为计算属性会导致代码行更改为0。
这不需要更改您的代码,但确实会迫使您重新编译所有代码。从字段更改为属性是一项重大的API更改,这将要求重新编译引用您程序集的所有程序集。通过将其设置为自动属性,您可以仅发送新的二进制文件并保持API兼容性。这就是我上面提到的“版本控制”优势…


![为什么使用简单属性而不是C#中的字段?[重复] 为什么使用简单属性而不是C#中的字段?[重复]](http://www.mshxw.com/aiimages/31/421428.png)
