在short,int,long之间区分真的很重要吗?

时间:2010-09-16 16:41:42

标签: c# types

在我的C#应用​​程序中,我想知道对较小的数字使用short是否真的很重要,对于较大的数字使用int是否真的很重要。内存消耗真的很重要吗?

11 个答案:

答案 0 :(得分:19)

除非您在某种结构中将大量这些包装在一起,否则根本不会影响内存消耗。使用特定整数类型的最佳理由是与API兼容。除此之外,只需确保您选择的类型具有足够的范围来覆盖您需要的值。除了简单的局部变量之外,它并不重要。

答案 1 :(得分:7)

简单的答案是,它并不重要。

更复杂的答案取决于它。

显然你需要选择一种能够保持你的数据结构而不会溢出的类型,即使你只存储较小的数字,那么选择int可能是最明智的做法。

但是,如果您的应用程序加载了大量数据或在内存有限的设备上运行,那么您可能需要为某些值选择short

答案 2 :(得分:4)

对于没有尝试从文件镜像某种结构的C#应用​​程序,最好使用整数或任何原生格式。唯一可能重要的另一个时间是使用数百万条目的数组。即便如此,我仍然会考虑整理。

答案 3 :(得分:3)

只有你可以判断内存消耗对你来说是否真正重要。在大多数情况下,它不会产生任何明显的差异。

一般情况下,我建议您使用int / Int32来逃避它。如果您确实需要在特定情况下使用shortlongbyteuint等,请执行此操作。

答案 4 :(得分:1)

这完全取决于您可以浪费的内存量。如果你不确定,那可能没关系。

答案 5 :(得分:1)

答案是:这取决于。记忆是否重要的​​问题完全取决于你。如果您正在编写一个具有最小存储和内存要求的小型应用程序,那么没有。如果你是谷歌,在数千台服务器上存储数十亿和数十亿条记录,那么每个字节都会花费一些钱。

答案 6 :(得分:1)

在某些情况下,我真的很烦心。

  1. 当我有内存限制时
  2. 当我进行bithift操作时
  3. 当我关心x86 / x64可移植性时
  4. 其他所有情况都是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对几乎任何事情都没问题。例外情况包括:

  • 如果您有特定需求,其他类型明显更好。示例:如果您正在编写16位仿真器,Int16(又名:short)可能更好地代表一些内部构造
  • 当API需要某种类型时
  • 有一次,我有一个无效的int演员,而Visual Studio的第一个建议是验证我的价值低于无穷大。如果不使用预定义的常量,我找不到一个好的类型,所以我使用ulong,因为那是我在.NET 2.0中最接近的:)