现在这样做之间的区别是什么:
public string Title { get; set; }
和此:
public string Title;
当天人们总是说使用访问器方法和公共访问者调用的私有变量,现在.net已经得到了get;组;如此简化的语句,如果没有私有变量,它们看起来几乎相同,只是使用一个公共变量,那么重点和区别是什么?
答案 0 :(得分:8)
我有一篇文章:Why properties matter。
简而言之:属性是API的一部分。字段是实现的一部分。不要将您的实现暴露给全世界。您可以更改自动实现的属性,以便以源和二进制兼容的方式拥有更多行为(例如,记录日志)。你不能用一个字段做到这一点。
答案 1 :(得分:2)
第一个
public string Title { get; set; }
是一个属性(实际上是一个函数)。
第二个
public string Title;
是一个领域。
最好使用属性来隐藏实现(Encapsulation)。
答案 2 :(得分:0)
在第二种情况下,如果不重新编译依赖程序集,则无法修改访问器的实现(因为它不是访问器)。