The 已开始出现在“赞助者”区域中的信息似乎表明该属性仅适用于逻辑数据成员(请参阅文档的第 34-35 页)。在以下情况下,方法被认为是适当的:
- 该操作是一个转换,例如Object.ToString()。
- 该操作的成本足够高,您希望告知用户他们应该考虑缓存结果。
- 使用 get 访问器获取属性值会产生明显的副作用。
- 连续两次调用该成员会产生不同的结果。
- 执行顺序很重要。
- 该成员是静态的,但返回一个可以更改的值。
- 该成员返回一个数组。
大多数开发人员是否同意上述属性与方法的争论?如果是这样,为什么?如果没有,为什么不呢?
它们看起来很合理,并且基本上符合 MSDN 会员设计指南:
http://msdn.microsoft.com/en-us/library/ms229059.aspx http://msdn.microsoft.com/en-us/library/ms229059.aspx
人们有时似乎忘记的一点 (*) 是调用者应该能够以任何顺序设置属性。对于支持设计器的类尤其重要,因为您无法确定生成的代码设置属性的顺序。
(*) 我记得 Codeplex 上的 Ajax 控制工具包的早期版本有许多错误,因为开发人员忘记了这一点。
至于“连续两次调用该成员会产生不同的结果”,每个规则都有一个例外,如属性 DateTime.Now 所示。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)