除少数情况外,所有属性都由字段(显式或隐式)备份.但是,类似DateTime.Today的属性是未由字段备份的计算属性(编辑:属性Guid.Empty和Math.E静态字段备份,我对这些属性不感兴趣).
在最佳实践或经验方面,这些无场属性应该是静态的,非静态的吗?
我知道意见各不相同,所以我想从众所周知的图书馆,书籍或你自己的经验中找到例子.最后,我希望在教室中找到"从现场"中使用的明确例子.
编辑:我理解语义与实现的讨论,我正在寻找的是真实世界的例子,清楚简明地解释每个案例(静态或非静态)的概念.
属性是静态的还是实例取决于它的目的和意义.
DateTime.Today静态的原因是因为它实际上正在返回一个实例DateTime- 首先必须创建一个DateTime然后调用实例方法(或实例属性)来获取当前日期是不方便的.
在下列情况下,您应该考虑将属性设为静
否则,属性可能需要是实例属性 - 或者可能是方法.
.NET中静态属性的一些有趣示例包括:
编辑:在思考在.NET中使用实例v.静态属性的地方时,Thread类会作为一个类的例子,它在选择何时使用它时会感到困惑.
例如,CurrentPrincipal属性是静态属性,而CurrentCultureproperty是实例属性.目前还不清楚这个组织是否有任何好处 - 似乎(对我而言)所有的静态属性都Thread可以成为实例属性(除外CurrentThread)而不会失去任何表达能力,但增加了公共接口的一致性和清晰度.