是否应将所有具有返回值的方法转换为属性?

uri*_*ium 3 .net

我只是在思考它,因为.Net已经引入了属性,在某种情况下,您希望将代码保留为返回值而不是readonly属性的方法.

Nat*_*nst 10

不,我建议看看微软的财产使用指南:

类库设计者通常必须决定将类成员实现为属性还是方法.通常,方法表示动作,属性表示数据.使用以下准则可帮助您选择这些选项.

  • 当成员是逻辑数据成员时,请使用属性.在以下成员声明中,Name是属性,因为它是类的逻辑成员.
  • 使用方法时:
    • 该操作是转换,例如Object.ToString.
    • 操作非常昂贵,您希望与用户通信他们应该考虑缓存结果.
    • 使用get访问器获取属性值会产生可观察到的副作用.
    • 连续两次调用该成员会产生不同的结果.
    • 执行顺序很重要.请注意,应该能够以任何顺序设置和检索类型的属性.
    • 该成员是静态的,但返回一个可以更改的值.
    • 该成员返回一个数组.返回数组的属性可能会产生误导.通常需要返回内部数组的副本,以便用户无法更改内部状态.这与用户可以轻易地认为它是索引属性的事实相结合,导致代码效率低下.在下面的代码示例中,每次对Methods属性的调用都会创建数组的副本.结果,将在以下循环中创建2n + 1个阵列副本.