gpt4 book ai didi

c# - 哪些准则适用于确定何时将类成员实现为属性而不是方法?

转载 作者:太空狗 更新时间:2023-10-29 23:28:09 26 4
gpt4 key购买 nike

.NET coding standards PDF from SubMain已经开始出现在“赞助商”区域中的属性似乎表明属性仅适用于逻辑数据成员(请参阅文档的第 34-35 页)。在以下情况下,方法被认为是合适的:

  • 操作是一个转换,例如Object.ToString()。
  • 该操作的开销非常大,以至于您想要告知用户他们应该考虑缓存结果。
  • 使用 get 访问器获取属性值会产生明显的副作用。
  • 连续两次调用该成员会产生不同的结果。
  • 执行顺序很重要。
  • 该成员是静态的,但返回一个可以更改的值。
  • 成员返回一个数组。

大多数开发人员是否同意上述属性与方法的争论?如果是这样,为什么?如果不是,为什么不呢?

最佳答案

它们看起来很合理,并且基本符合 MSDN 成员设计指南:

http://msdn.microsoft.com/en-us/library/ms229059.aspx

人们有时似乎忘记的一点 (*) 是调用者应该能够以任何顺序设置属性。对于支持设计器的类尤其重要,因为您无法确定生成的代码将设置属性的顺序。

(*) 我记得 Codeplex 上的 Ajax Control Toolkit 的早期版本有很多错误,因为开发人员忘记了这个错误。

至于“连续两次调用成员产生不同的结果”,每条规则都有一个异常(exception),如属性 DateTime.Now 所示。

关于c# - 哪些准则适用于确定何时将类成员实现为属性而不是方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/164023/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com