为什么DateTime.Now.Ticks不一致?

ana*_*lov 5 c# datetime

我有一个简单的控制台应用程序与以下正文:

Console.WriteLine(DateTime.Now.Ticks.ToString());
Console.WriteLine(DateTime.Now.Ticks.ToString());
Console.WriteLine(DateTime.Now.Ticks.ToString());
Console.WriteLine(DateTime.Now.Ticks.ToString());
Console.WriteLine(DateTime.Now.Ticks.ToString());
Console.WriteLine(DateTime.Now.Ticks.ToString());
Console.WriteLine(DateTime.Now.Ticks.ToString());
Console.WriteLine(DateTime.Now.Ticks.ToString());
Console.WriteLine(DateTime.Now.Ticks.ToString());
Console.WriteLine(DateTime.Now.Ticks.ToString());
Run Code Online (Sandbox Code Playgroud)

这些是三种不同运行的输出:

635258949900018675
635258949900028676   // +10001
635258949900028676   // +0
635258949900038677   // +10001
635258949900038677   // +0
635258949900038677   // +0
635258949900038677   // +0
635258949900038677   // +0
635258949900038677   // +0
635258949900038677   // +0

635258949937502423
635258949937512424   // +10001
635258949937512424   // +0
635258949937512424   // +0
635258949937512424   // +0
635258949937522425   // +10001
635258949937522425   // +0
635258949937522425   // +0
635258949937522425   // +0
635258949937522425   // +0

635258961813519906
635258961813529907   // +10001
635258961813529907   // +0
635258961813529907   // +0
635258961813529907   // +0
635258961813539908   // +10001
635258961813539908   // +0
635258961813539908   // +0
635258961813539908   // +0
635258961813539908   // +0
Run Code Online (Sandbox Code Playgroud)

有人可能会猜测这些值不同是正常的,因为Console.WriteLine执行之间需要一段时间.这些行之间的间隔是一个常量值10001,但不知何故,这个值在每个步骤都没有添加到前一个值.有时它是,有时它不是.我想知道为什么会这样.

ana*_*lov 1

引用乔恩的话:

您真的只是问为什么更改之间的调用次数不同吗?如果是这样,请记住您的机器中发生了多少事情 - 以及有多少事情可能会发生变化。