C# 区分short、int和long真的重要吗?
在我的C#app中,我想知道使用short表示较小的数字,int表示较大的数字等是否真的很重要。内存消耗真的很重要吗?这取决于你如何使用它们以及你有多少内存。即使您一次只有少量内存,这也可能会驱动备份存储中的数据类型。这完全与您可以浪费的内存量有关。如果你不确定,这可能无关紧要。只有你才能判断内存消耗是否真的对你重要。在大多数情况下,这不会产生任何明显的区别C# 区分short、int和long真的重要吗?,c#,types,C#,Types,在我的C#app中,我想知道使用short表示较小的数字,int表示较大的数字等是否真的很重要。内存消耗真的很重要吗?这取决于你如何使用它们以及你有多少内存。即使您一次只有少量内存,这也可能会驱动备份存储中的数据类型。这完全与您可以浪费的内存量有关。如果你不确定,这可能无关紧要。只有你才能判断内存消耗是否真的对你重要。在大多数情况下,这不会产生任何明显的区别 一般来说,我建议您使用int/Int32,这样您就可以不用担心了。如果在特定情况下确实需要使用short、long、byte、uint等,
一般来说,我建议您使用
int
/Int32
,这样您就可以不用担心了。如果在特定情况下确实需要使用short
、long
、byte
、uint
等,那么就这样做。对于不想从文件镜像某种结构的C应用程序,最好使用ints或任何您的原生格式。唯一重要的是,如果使用数以百万计条目的数组。即便如此,我还是会考虑int。 除非你把大量的这些元素打包在某种结构中,否则它根本不会影响内存消耗。使用特定整数类型的最佳原因是与API的兼容性。除此之外,只需确保您选择的类型具有足够的范围来覆盖您需要的值。除此之外,对于简单的局部变量,这并不重要。简单的答案是,这并不重要
更复杂的答案是,这要视情况而定
显然,您需要选择一种能够保存数据结构而不会溢出的类型,即使只存储较小的数字,选择int
可能是最明智的选择
但是,如果应用程序加载大量数据或在内存有限的设备上运行,则可能需要为某些值选择
short
。基于存储的整数类型的内存消耗在桌面或web应用程序中可能不是问题。在游戏或移动设备应用程序中,这可能是一个更大的问题
然而,区分这些类型的真正原因是需要存储的数字类型。如果您的数字真的很大,或者精度很高,您可能需要使用
long
来存储它。答案是:这取决于您。记忆是否重要完全取决于你。如果你正在编写一个存储和内存要求最低的小型应用程序,那么就不需要了。如果你是谷歌,在数千台服务器上存储了数十亿条记录,那么每个字节都会花一些钱。有一些情况下我真的很费心选择
int是由您的体系结构定义的,因此当您更改体系结构时,您需要意识到它可能会导致潜在的问题在这里,情况的上下文非常重要。你不需要猜测它是否重要,我们这里讨论的是可量化的东西。我们知道使用short而不是int可以节省2个字节 您估计在给定的时间点内存中的最大实例数是多少?如果有一百万,那么您可以节省约2Mb的Ram。那是大量的内存吗?同样,这取决于上下文,如果应用程序运行在具有4Gb内存的桌面上,您可能不会太在意2Mb
如果内存中有数亿个实例,那么节省下来的内存将非常大,但如果是这种情况,您可能没有足够的ram来处理它,您可能不得不将此结构存储在磁盘上,并一次处理其中的一部分。
Int32
几乎可以处理任何事情。例外情况包括:
- 如果你有特殊的需求,不同的类型显然更好。示例:如果您正在编写一个16位仿真器,
(aka:Int16
)可能更好地表示一些内部构件short
- 当API需要某种类型时
- 有一次,我有一个无效的
cast,VisualStudio的第一个建议是验证我的值是否小于无穷大。如果不使用预定义的常量,我就找不到合适的类型,所以我使用了int
,因为这是我在.NET 2.0中能找到的最接近的类型:)ulong
long
。在C#-int
中,x86 vs x64参数是错误的。int是系统的别名。Int32
(请参阅)如果您想要平台本机大小,那么我认为您需要使用IntPtr。愚蠢的人不明白。。。[StructLayout(LayoutKind.Sequential,Pack=1)]您可以根据需要在派生类中创建基类并定义字段。