人们经常被告知,我们应该通过为类字段创建getter和setter方法(C#中的属性)来保护封装,而不是将字段暴露给外界。
但是在很多情况下,只有一个字段可以保存值,并且不需要任何计算即可获取或设置。对于这些,我们都将使用以下数字:
public class Book { private string _title; public string Title { get{ return _title; } set{ _title = value; } } }
好吧,我有一个坦白的话,我忍不住写所有的东西(真的,不必写它,而不必去看它),所以我流氓并使用了公共领域。
然后是C#3.0,我看到它们添加了自动属性:
public class Book { public string Title {get; set;} }
哪个比较整洁,我对此很感激,但实际上,与仅公开场地有何不同?
public class Book { public string Title; }
在我前段时间遇到的一个相关问题中,有一个指向Jeff博客上的帖子的链接,解释了一些区别。
属性与公共变量
TryGetTitle(out book.Title); // requires a variable