Why does DateTime's AddMonths function takes Int32 parameter and not Int16
我对这件事很好奇
英特32
1 2
| int addmonths_int = 10;
DateTime.Now.AddMonths(addmonths_int); |
因特16
1 2
| short addmonths_short = 10;
DateTime.Now.AddMonths(addmonths_short); |
如果我们可以在AddMonths函数中把Int16作为参数,而且月份的值也不能超过12,那么为什么.NET Framework使用月份作为Int32而不是Int16…
如果宣布月份为Int16有文化方面的问题…!!!???!!!
我在这里想,如果month是Int16,那么它在某些地方可以节省一些长度。我想是Memory Allocation。
更新
what would be the suggestion for DateTime.Now.Month property couldn't it be Int16 instead of Int32 ??
< /块引用>
都是一样的吗??
- 这个问题也会在"我把一些好的hightlight on the 270263 stackoverflow.com /问题/话题/ & hellip;
- 你可以在第18个月计算的日期上的限制,使我不安。(12)如果它会做更多比好,Byte适当Int16)
- @ @的赞同与好的leybaert'菲利普- S和S的概念,但我会好的jason' for the property不建议DateTime.Now.MonthInt16instead of Int32t它??
- 再次,如果我们是微优化,我们为什么会停在Int16when Byteis available?
- "达米安- the - unbeliever True
- 计算与32位处理器的在线短’’。英特尔铁芯在线支付,你是16位或者32 for the to the位转换或操作码字头,说instead of the add should be 16 32位。后者the used to one CPU周期和成本,如果它仍然does not。the CPU缓存储蓄你get out of memory is to储存16位非在线的问题个月。好的,usually。
- 汉斯-你救了我"这个问题,我的问题about to delete this…顺便解释恩should be在回答好,我认为……我知道,我能接受它!!!!!!!!!!!!!!!:D
首先,可能超过12个月。没有什么能阻止你计算日期加上435345个月。
至于int32选项:int32是32位系统的本机整数数据类型,因此它是最有效的数据类型。
- + 1。为什么要浪费16位(对于一个int16)或24位(对于一个字节)?此外,假设一个月不能增加12个月是不正确的。有效的月数可能限制为12个月(并且只有基于一个月),但是您可以在一个日期中添加大量的月来计算新的日期。
- @迈克:我不明白你所说的"浪费"是什么意思。记忆在哪里被浪费了?几乎可以肯定的是,这一争论将被登记,在现代硬件上,寄存器至少有32位宽。您真的想生成额外的代码来确保32位寄存器中的数字永远不会大于16位整数吗?为了确保前16位始终为零,您愿意生成多少额外的代码?
- @埃里克,事实上,我认为我们非常同意。尽管我很高兴地承认,你对clr和编译器内部有着极其卓越的知识——我只是一个袖珍理论家,我对这些东西如何工作的知识充其量只是微不足道的。我的观点是,在任何情况下,您都会使用32位,并且试图通过分配较小的数据类型来节省内存在很大程度上是没有意义的,特别是因为关于方法契约的假设是错误的。
- @迈克:啊,是的,那我们就达成了暴力协议。我误解了你论点的要旨。我的错!
If we could give Int16 as Parameter in the AddMonths function and also the month's value can never be more than 12 then why do .NET Framework uses the month as Int32 and not Int16...
为什么你不能在今天加上13个月,到2012年6月25日结束呢?
您可以使用add months函数为给定日期添加超过12个月的时间。
但实际限制如下:
Months value must be between +/-120000
您的假设不正确:
also the month's value can never be
more than 12
即使您是正确的,我认为它也不会给您带来太多使用16位整数而不是32位整数的好处:也许日期时间对象的大小根本不会改变。