为什么DateTime对象的Year,Month和Day属性类型为int32而不是int16类型

时间:2013-07-30 08:25:37

标签: c# .net datetime

我正在创建一个方法,让我从托管一些数据的SQL表中获得最少年份,为了节省空间和内存,我创建了返回类型为int16的方法。我很惊讶地看到DateTime对象的Year,Month和Day属性是int 32类型,我认为这是无用的,而且是浪费内存。是否有理由将Microsoft声明为int32而不是int16。

2 个答案:

答案 0 :(得分:5)

.Net DateTime对象的内部表示不是d / m / y / s,而是一个64位整数,表示自纪元以来的刻度数。

属性以整数形式返回,因为它们更易于使用,并且通常是要处理的最便宜的数据类型。

答案 1 :(得分:2)

DateTime是单个64位值,无论其属性的类型如何。年,月,日都包含在该值内,占用的空间比Int16少得多。

现在从属性中返回除Int32之外的任何内容都没什么好处,因为大多数CPU处理本机整数大小(int32 / int64)而不是更小的代码 - 所以你可能需要更慢/更复杂的代码产生了一些可疑的节省。

如果您确实需要将结果值存储在“数组天”中,那么显然可以将结果值存储在较小的类型中,但测量性能影响是个好主意 - 您可能会发现令人惊讶的结果......