在.Net框架DateTime结构中,Year被定义为int(实际上是System.Int32).但是,MSDN文档说该值始终介于1和9999之间.因此,ushort(System.UInt16)足以存储该值并占用一半的空间.那么为什么它是一个int而不是一个ushort呢?
有一个从ushort到int的隐式转换,因此在Year上不需要进行转换来进行整数运算.
我意识到这是一个微优化问题,因此不是很重要.我只是好奇.
因此,ushort (System.UInt16) 足以存储该值并占用一半的空间。
您认为“空间”浪费在哪里?DateTime无论如何,不会将每个组件存储在单独的字段中。如果您将年份存储在某个地方,请随意将其转换为ushort- 并转换Month为 abyte等。
请注意,这ushort不符合 CLS,这可能就是其原因。有很多属性没有签名是有意义的,例如string.Length等等......但框架会尽可能地兼容 CLS。