其他能够对 setter 中的值进行健全性检查是否有更根本的原因来选择属性而不是公共变量?
我们以前有过这个主题,但现在找不到任何内容。
简而言之:您的需求可能会发生变化:如果现在没有健全性检查,将来可能需要进行健全性检查。但是,如果您将公共字段更改为属性,则会破坏二进制兼容性:每个使用您的代码/库的客户端都必须重新编译。
This is bad因为它可能会花费很多钱。
从一开始就使用属性可以避免这个问题。这甚至对于不属于库的代码也很重要。为什么?因为你永远不知道:代码(即使是高度特定于领域的!)可能会被证明是有用的,所以你想将其重构为一个库。如果您已经使用属性来代替公共/受保护字段,那么这个重构过程显然会变得更加容易。
此外,在 C# 3.0 中编写公共属性很容易,因为您可以只使用自动实现的属性,从而节省大量代码:
public DataType MyProperty { get; set; }
将为您实现必要的支持字段和 getter/setter 代码。
我将添加一个个人注释:.NET 在这方面的行为有些懒惰。编译器可以即时将公共字段更改为属性,从而避免该问题。 VB6 已经对 COM 公开的类执行了此操作,而且我认为 VB.NET 和 C# 绝对没有理由不执行相同操作。也许编译器团队的某个人(Jared?)可以对此发表评论。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)