这两种accessor / getter / setter方法的区别?

时间:2010-07-14 11:05:02

标签: .net get set accessor

现在这样做之间的区别是什么:

public string Title { get; set; }

和此:

public string Title;

当天人们总是说使用访问器方法和公共访问者调用的私有变量,现在.net已经得到了get;组;如此简化的语句,如果没有私有变量,它们看起来几乎相同,只是使用一个公共变量,那么重点和区别是什么?

3 个答案:

答案 0 :(得分:8)

我有一篇文章:Why properties matter

简而言之:属性是API的一部分。字段是实现的一部分。不要将您的实现暴露给全世界。您可以更改自动实现的属性,以便以源和二进制兼容的方式拥有更多行为(例如,记录日志)。你不能用一个字段做到这一点。

答案 1 :(得分:2)

第一个

public string Title { get; set; }

是一个属性(实际上是一个函数)。

第二个

public string Title;

是一个领域。

最好使用属性来隐藏实现(Encapsulation)。

答案 2 :(得分:0)

在第二种情况下,如果不重新编译依赖程序集,则无法修改访问器的实现(因为它不是访问器)。