除非您自己参与决策,否则很难回答“为什么”的问题。话虽如此,正如 HABO 的回答所表明的那样,100 ns 滴答声很可能是 VMS 的灵感(Dave Cutler参与了 VMS 和 Windows NT 的设计)。
但是,由于您希望将时间跨度适合有符号的 64 位数字,因此使用 100 ns 作为刻度值是有意义的。最大时间跨度 ( TimeSpan.MaxValue
) 为
0x7FFF FFFF FFFF FFFF 滴答声
= 9 223 372 036 854 775 807 个滴答声
= 9 223 372 036 854 775 807 滴答 / 10 000 000 滴答/秒
= 922 337 203 685 秒
~ 30 000 年
不同的刻度值导致不同的最大时间跨度:
蜱虫 | 最大时间跨度(大约)
-------+------------
10 纳秒 | 3000 年
100 纳秒 | 30 000 年
1微秒| 30万年
忽略DateTime.Kind
一个DateTime
值基本上是TimeSpan
与纪元 01-01-0001 00:00:00 ( DateTime.MinValue
) 的偏移量,因此使用 100 ns 滴答声,您可以适应日期 31-12-9999 23:59:59 ( DateTime.MaxValue
)。对于 10 ns 滴答声,您将在 3000 年之前用完滴答声,这是不可能的。而对于 1 μs 滴答声,您可以将时间分辨率降低 10 倍,而对于假设 10000 年的日期表示,您不会得到任何回报第一年“你不在乎”。
考虑到这一点,似乎使用带符号的 64 位值仍然允许您表示所有 4 位数年份的最小刻度值是 100 ns。
(如果你认为 2000 年的问题对 IT 行业来说很难,那就等 10000 年的问题吧。)