为什么DateTime的AddMonths函数采用Int32参数而不是Int16

时间:2011-05-25 13:07:31

标签: c# .net datetime

我对这件事非常好奇

的Int32

int addmonths_int = 10;
DateTime.Now.AddMonths(addmonths_int);

的Int16

short addmonths_short = 10;
DateTime.Now.AddMonths(addmonths_short);

如果我们可以在Int16函数中将AddMonths作为参数,并且月份的值永远不会超过12,那么为什么.NET Framework将月份用作Int32 {1}}而非Int16 ...

如果在宣布月份为Int16时有任何文化特定问题...... !! ?? !!

我在这里想,如果month本来是Int16那么它会在某些地方节省一些长度......我认为Memory Allocation

更新

  
    

什么是DateTime.Now.Month属性的建议不能是Int16而不是Int32 ??

  

是一个人和同一个人吗?

4 个答案:

答案 0 :(得分:9)

首先,它可能超过12个月。没有什么可以阻止你计算日期加上435345个月。

对于Int32选择:Int32是32位系统的本机整数数据类型,因此它是最有效的数据类型。

答案 1 :(得分:3)

  

如果我们可以在AddMonths函数中将Int16作为参数提供,并且月份的值永远不会超过12,那么为什么.NET Framework将月份用作Int32而不是Int16 ......

为什么你不能在今天增加十三个月到2012年6月25日结束?

答案 2 :(得分:1)

您的假设不正确:

  

月份的价值也永远不会   超过12

即使你是对的,我也不认为它会使用16位整数而不是32位整数给你带来太大的影响:可能DateTime对象的大小根本不会改变。

答案 3 :(得分:1)

使用AddMonths函数,您可以在指定日期添加超过12个月。

但实际限制如下:

  

月份值必须介于+/- 120000

之间