< p > (忽略优化编译器标志)
这段代码在某些系统上可能会进入该块吗?
if (Datetime.Now!=Datetime.Now)
{
...
}
我的意思是,它如何评估这里的值?(按顺序吗)?
是否存在任何情况,其中条件可能为真?
再次强调,请忽略优化标志。
Thread.Sleep
、DateTime.Now
、Environment.TickCount
、线程切换等。 - CodesInChaosDateTime.Now
相对较昂贵,因为它使用了 IO。这是存储副本的另一个原因。编辑:这是我所指的链接:https://dev59.com/f2TWa4cB1Zd3GeqPFJ-F - Tim SchmelterDateTime.UtcNow
的成本为9ns,而DateTime.Now
的成本为900ns。 - CodesInChaosDateTime.Now
内部调用:
public static DateTime Now
{
get
{
return DateTime.UtcNow.ToLocalTime();
}
}
这里涉及内部调用:
public static DateTime UtcNow
{
get
{
long systemTimeAsFileTime = DateTime.GetSystemTimeAsFileTime();
return new DateTime((ulong)(systemTimeAsFileTime + 504911232000000000L | 4611686018427387904L));
}
}
在 IT 技术中,GetSystemTimeAsFile 是 WindowsAPI 函数,用于返回 系统 时钟信息。其准确性取决于系统。
如果您在不同时间获取 (DateTime.Now
) 之间存在延迟,可能会产生足够不同的结果导致相等比较器失败。但在我的个人经验中,我从未遇到过这种情况。
49.9纳秒 vs 50纳秒
。 - leppie