7

.Net フレームワークの DateTime 構造では、Year は int (実際には System.Int32) として定義されます。ただし、MSDN のドキュメントによると、値は常に1 から 9999 の間になります。したがって、ushort (System.UInt16) は値を格納するのに十分であり、スペースの半分を占有します。では、なぜそれは int であり、ushort ではないのでしょうか?

ushort から int への暗黙的な変換があるため、Year で整数演算を行うために必要なキャストはありません。

これはマイクロ最適化の問題であり、それほど重要ではないことを認識しています。ただ興味があるだけ。

4

2 に答える 2

4

したがって、ushort (System.UInt16) は値を格納するのに十分であり、スペースの半分を占有します。

「スペース」はどこで無駄になっていると思いますか? DateTimeとにかく、各コンポーネントを個別のフィールドに保存しません。年をどこかに保存している場合、気軽にushort- にキャストMonthしてbyte、 などにキャストしてください。

CLS に準拠していないことに注意してくださいushort。これがおそらくその理由です。などなど、署名されていないことが理にかなっているプロパティはたくさんstring.Lengthありますが、フレームワークはできる限り CLS に準拠しようとします。

于 2012-06-21T14:46:54.433 に答える
0
  • unit は符号なし 16 ビット整数を返します
  • Int は 32 ビット整数を返します。

JIT Compiler は CPU アーキテクチャを利用しているため、32 ビットでの処理は 16 ビットよりも効率的であると想定しています。整数と長整数 (割り当てられたバイトとアーキテクチャの速度) を使用する場合、VB6 で同様の議論があったと思います。

http://blogs.msdn.com/b/davidnotario/archive/2005/08/15/451845.aspx

于 2012-06-21T14:51:41.587 に答える