有什么理由在C#中使用byte / short等..

在int类型?

很多代码使用int和double / float。

我知道有一些像.NET移动版本这样的字节/短片是自己的,但对于桌面应用程序有什么意义吗?

当我做C ++工作(游戏编程)时,我非常清楚我使用的每种数据类型,尽管我在C#/ Java工作中没有这种感觉。

如果我知道我的循环永远不会越过字节的边界,那么使用一个字节会不会有任何好处?

long相比,单个byte不会在内存方面产生巨大差异,但是当您开始使用大型数组时,这7个额外字节将产生很大的差异。

更重要的是,数据类型有助于更好地传达开发人员的意图:当遇到byte length; 你知道length的范围是一个byte的范围。

我认为这个问题是在10多年前,通常的做法是考虑你的变量需要存储什么值,例如,如果你存储一个百分比(0..100),你可能会使用一个字节(-128到127签名或0到255无签名),因为它对于工作来说足够大,因此被视为不那么“浪费”。

然而,现在这些措施是不必要的。 内存通常不是那么重要,如果它是你可能会被现代计算机击败,无论如何在32位字边界(如果不是64)上对齐。

除非你存储了数以千计这些东西的数组,否则这些微观优化(现在)是无关紧要的分心。

坦率地说,我不记得上一次我没有使用一个字节用于原始数据以外的其他东西,我想不出上次我使用短片,好吧,什么。

使用小于CPU本机字大小的数据类型时,性能损失很小。 当CPU需要将两个字节加在一起时,它将它们加载到(32位)字大小的寄存器中,添加它们,调整它们(切断三个最重要的字节,计算进位/溢出)并将它们存储回一个字节。

这是很多工作。 如果您要在循环中使用变量,请不要使其小于CPU的本机字。

存在这些数据类型,以便代码可以处理包含它们的结构,因为大小限制,或者因为遗留API或者没有。

使用byte 很多理由 – 任何处理原始二进制流(图像,文件,序列化代码等)的东西都必须用byte[]缓冲区来讨论。

我不会将byte用作计数器,但CPU可以更有效地处理int

short ……当你有一个数组时 ,它可能会节省相当多的空间,但一般来说我只是使用int

这是“使用正确的工具”的案例。 如果您正在处理表示字节的内容,则使用byte数据类型。 例如,涉及字节流的许多代码需要使用字节数组。 相反,如果你只是处理任意整数,你可以使用intlong如果它们大于int可以处理的话。