Contents

看看Eric Lippert关于什么时候应该使用C#的属性的建议When should I write a property?

  1. 逻辑上是一个类的属性。
  2. 属性应该比较稳定,不应该自己变化。 作者指出DateTime.Now违反了这两条。
  3. 属性读和写所花的时间应该和成员变量的读和写差不多,不能超过10倍。
  4. 一个常用的属性的模式是用来缓存一个花费时间较多,可以延迟计算的值。但是要小心,特别是需要做到线程安全时更要小心。想想单例模式怎么做到多线程安全吧。
  5. 属性的读操作不应该改变对象的状态。(除非是上面那条)
  6. 属性的读操作应该永远成功,不能抛异常。
  7. 当用调试器调试程序时,如果用调试器看一个对象的状态,默认会调用这个属性的读操作,所以如果读操作会改变对象状态的话,说明调试程序会改变程序状态!
  8. 不要让属性的读操作返回一个数组或者list。
  9. 属性的读操作不要返回一个可变的值类型。因为值类型会拷贝一份,你其实没有改变原来的值。
Contents