【发布时间】:2011-07-23 05:14:25
【问题描述】:
看完这篇博文:http://wekeroad.com/post/4069048840/when-should-a-method-be-a-property,
我想知道为什么微软选择 C#:
DateTime aDt = DateTime.Now;
而不是
DateTime aDt = DateTime.Now();
- 最佳实践说:连续两次调用成员时使用方法会产生不同的结果
-
DateTime.Now是非确定性方法/属性的完美示例。
你知道这种设计是否有任何理由吗?
或者如果这只是一个小错误?
【问题讨论】:
-
(Date)时间只是一种幻觉:一切都发生在当下。所以这是一个属性:)
-
嘿嘿...相对来说,值永远不变;它总是
Now。如果结构在其字段中包含不同的数字,则值将相对于Now!啊……脑……痛…… -
@Andrew:那么它应该返回
Func<DateTime>吗? :) -
我写了一个程序,在循环中调用
DateTime.Now等待它改变。我可以连续调用它超过 16,000 次而不改变它。使用UtcNow在它改变之前,我接到了超过 100 万个连续呼叫。我认为这足以使其成为财产。 -
@Gebe ,我建议约定:“如果连续调用该方法42次返回相同的值-它可以转换为属性。”