我有以下代码:
var a = (DateTime.Now.Subtract(DateTime.Now.AddTicks(8))).Ticks;
var b = (DateTime.Now - DateTime.Now.AddTicks(8)).Ticks;
当我检查值时,我看到:
a = -78
b = -20
为什么?不应该都是-8?
答案 0 :(得分:6)
你依靠系统同时做所有事情,但事实并非如此。每次获得DateTime.Now
时,它都会有不同的值。
快速实验表明,在开始时捕获DateTime.Now
的值,然后对其执行操作:
var d = DateTime.Now;
var a = (d.Subtract(d.AddTicks(8))).Ticks;
var b = (d - d.AddTicks(8)).Ticks;
产生您期望的结果。 a
和b
具有相同的值-8
。
答案 1 :(得分:1)
这些代码行需要时间来执行。在单个方法或操作中多次使用Now
永远不会好。或者Today
,就此而言。