3

现在这样做有什么区别:

public string Title { get; set; }

和这个:

public string Title;

过去人们总是说使用带有由公共访问器调用的私有变量的访问器方法,现在.net 已经取得了;放; 语句如此简化,以至于没有私有变量时它们看起来几乎与仅使用公共变量一样,那么重点和区别是什么?

4

3 回答 3

8

我有一篇关于此的文章:为什么属性很重要

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

于 2010-07-14T11:08:26.963 回答
2

第一个

public string Title { get; set; }

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

第二个

public string Title;

是一个字段。

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

于 2010-07-14T11:09:20.843 回答
0

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

于 2010-07-14T11:09:08.953 回答