TimeSpan.Duration()
会为您提供TimeSpan
的持续时间的绝对值,这在某些情况下非常有用。
通常,方法表示操作,属性表示数据。 属性意味着像字段一样使用,意味着属性 不应该是计算复杂或产生副作用。当它 不违反以下准则,考虑使用财产, 而不是一种方法,因为经验不足的开发人员发现 属性更容易使用。
如果成员代表该类型的逻辑属性,请考虑使用属性。
(强调他们的。)
持续时间似乎没有违反"使用方法如果"部分,或者。
我认为这可能是出于向后兼容的原因,所以我去back to the property vs method guidelines for .NET 2,他们相对没有变化。那么我想知道.NET 1.1是否只是没有属性but it did,所以我也不会认为这也是原因。
答案 0 :(得分:2)
我猜这是因为它可以在边界情况下抛出OverflowException。通常情况下,属性getter最好不要抛出异常(在某些情况下可能除了ObjectDisposedException),尽管我不知道具体说明这一点的指南。这可能包含在“产生副作用”指南中,因为抛出的异常肯定是副作用。