在第2章 C#5.0 in a Nutshell 中的数字类型主题中,我发现了这句话:
为什么 int 和 long 是一流的公民,并且受到C#和运行时的青睐?并且,为什么其他类型用于互操作性?
答案 0 :(得分:12)
由于现代处理器的构建方式。 32位和64位处理器经过特别优化,可处理32位和64位整数。这称为word size:
包括嵌入式系统在内的现代处理器通常具有8,16,24,32或64位的字大小,而现代通用计算机通常使用32位或64位。
这意味着处理器可以比其他类型更容易地使用这些类型执行算术运算。尽管理论上占用的内存空间较小,但byte
或short
仍然被加载到处理器上的32位或64位寄存器中(取决于架构)。
答案 1 :(得分:2)
int
和long
优先于uint
和ulong
完全随意 。没有技术上的原因,为什么无符号整数比签名整数更难支持;如果有的话,签名整数将难以在硬件中支持。
此外,“兼容性”甚至不是一个原因,因为在设计.NET时,无法与保持兼容!
所以签名类型是首选,因为他们觉得这样 他们很可能已经将CLS设计为包含无符号整数,并且它也可以工作。