在我的C#应用程序中,我想知道对较小的数字使用short是否真的很重要,对于较大的数字使用int是否真的很重要。内存消耗真的很重要吗?
答案 0 :(得分:19)
除非您在某种结构中将大量这些包装在一起,否则根本不会影响内存消耗。使用特定整数类型的最佳理由是与API兼容。除此之外,只需确保您选择的类型具有足够的范围来覆盖您需要的值。除了简单的局部变量之外,它并不重要。
答案 1 :(得分:7)
简单的答案是,它并不重要。
更复杂的答案取决于它。
显然你需要选择一种能够保持你的数据结构而不会溢出的类型,即使你只存储较小的数字,那么选择int
可能是最明智的做法。
但是,如果您的应用程序加载了大量数据或在内存有限的设备上运行,那么您可能需要为某些值选择short
。
答案 2 :(得分:4)
对于没有尝试从文件镜像某种结构的C#应用程序,最好使用整数或任何原生格式。唯一可能重要的另一个时间是使用数百万条目的数组。即便如此,我仍然会考虑整理。
答案 3 :(得分:3)
只有你可以判断内存消耗对你来说是否真正重要。在大多数情况下,它不会产生任何明显的差异。
一般情况下,我建议您使用int
/ Int32
来逃避它。如果您确实需要在特定情况下使用short
,long
,byte
,uint
等,请执行此操作。
答案 4 :(得分:1)
这完全取决于您可以浪费的内存量。如果你不确定,那可能没关系。
答案 5 :(得分:1)
答案是:这取决于。记忆是否重要的问题完全取决于你。如果您正在编写一个具有最小存储和内存要求的小型应用程序,那么没有。如果你是谷歌,在数千台服务器上存储数十亿和数十亿条记录,那么每个字节都会花费一些钱。
答案 6 :(得分:1)
在某些情况下,我真的很烦心。
其他所有情况都是int
编辑:关于x86 / x64
在x86架构中,int是32位,但在x64中,int是64位
如果你在任何地方写“int”并从一个架构移动到另一个架构,它可能会导致问题。例如,你有一个32位api导出一个长。你把它转换成一个整数,一切都很好。但是当你转向x64时,地狱就会崩溃。
int由您的体系结构定义,因此当您更改体系结构时,您需要意识到它可能会导致潜在的问题
答案 7 :(得分:0)
这一切都取决于你如何使用它们以及你拥有多少。即使您一次只有少量内存 - 这可能会驱动后备存储中的数据类型。
答案 8 :(得分:0)
基于您存储的整数类型的内存消耗可能不是桌面或Web应用程序中的问题。在游戏或移动设备应用中,它可能更像是一个问题。
但是,区分类型的真正原因是您需要存储的数字种类。如果您的数字非常大或精度很高,则可能需要使用long
来存储它。
答案 9 :(得分:0)
情况的背景在这里非常重要。你不需要猜测它是否重要,但我们在这里处理可量化的事情。我们知道通过使用short而不是int来节省2个字节。
您估计在给定时间点内存中最大的实例数是多少?如果有一百万,那么你节省了〜2Mb的Ram。这是一个大量的公羊吗?同样,它取决于上下文,如果应用程序在具有4Gb内存的桌面上运行,您可能不太关心2Mb。
如果内存中有数亿个实例,那么节省的费用将会非常大,但如果是这样的话,你可能没有足够的ram来处理它,你可能不得不将这个结构存储在磁盘上并且一次使用它的一部分。
答案 10 :(得分:0)
Int32
对几乎任何事情都没问题。例外情况包括:
Int16
(又名:short
)可能更好地代表一些内部构造int
演员,而Visual Studio的第一个建议是验证我的价值低于无穷大。如果不使用预定义的常量,我找不到一个好的类型,所以我使用ulong
,因为那是我在.NET 2.0中最接近的:)