正如许多人指出的那样,A是一个 字段 ,B是一个 属性 。
真正的问题是,您为什么要关心以及使用什么?
我指的是Jonathan
Aneja的博客文章:
(在VB中,但它也适用于C#;)
那么,为什么要对字段使用属性,有五个原因:
1.字段不能在接口中使用您不能通过接口强制对象的公共合同中存在字段。对于属性,虽然效果很好。
2.验证尽管您的应用程序当前可能不需要任何验证逻辑来设置特定值,但是更改业务需求可能需要稍后插入此逻辑。那时,将字段更改为属性对于API使用者来说是一项重大更改。(例如,如果有人通过反射检查您的班级)。
3.二进制序列化如果使用二进制序列化,则将字段更改为属性是一项重大更改。顺便说一句,这是VB10的自动实现属性具有“可绑定”后备字段(即,您可以在代码中表示后备字段的名称)的原因之一-
4.许多.NET数据绑定基础结构绑定到属性,但不绑定到字段
这样,如果您将自动实现的属性更改为扩展的属性,您仍然可以通过保持背景字段名称相同来保持序列化兼容性(在C#中,您不得不更改它,因为它会生成具有不可绑定名称的背景字段)。我已经听过双方关于这是否是一件好事的争论,但现实是这就是现在的工作方式。 (我的注意:WPF绑定适用于属性)
5.暴露公共场所[违反FxCop](http://msdn.microsoft.com/en-us/library/ms182141(VS.80).aspx)
由于上述许多原因:)
可能还有更多原因。
我还想指出Jeff Atwood的博客文章,并引用其中的一段话:
这里最重要的事情是避免编写无关紧要的代码。 围绕公共变量的属性包装器是毫无意义的代码的本质。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)