自分で意思決定に関与していない限り、「なぜ」という質問に答えるのは簡単ではありません。そうは言っても、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 年
ticks の値が異なると、最大時間範囲も異なります。
目盛り | 目盛り 最大期間(概算)
-------+------------------------
10ns | 3000年
100ns | 3万年
1μs | 30万年
値を無視DateTime.Kind
するDateTime
ことは、基本的TimeSpan
にエポック 01-01-0001 00:00:00 ( DateTime.MinValue
) からのオフセットであるため、100 ns ティックを使用すると、日付 31-12-9999 23:59:59 ( DateTime.MaxValue
) に対応できます。これは、3000 年より前にティックが不足する 10 ns ティックでは不可能です。また、1 μs ティックでは、10000 年を想定した日付の表現に関して見返りを得ることなく、時間分解能を 10 分の 1 に下げます。最初の年は「あなたは気にしない」。
それを念頭に置いて、符号付き64ビット値を使用しても、4桁の年すべてを表すことができる最小の目盛り値は100 nsであるようです。
(そして、2000 年問題が IT 業界にとって困難であると信じているのであれば、10000 年問題を待ってください。)