为什么C#将整数类型实现为结构而不是基本类型?

时间:2016-11-28 13:00:37

标签: c# int

C#中查看int类型如何实现为System.Int32 struct,我想知道为什么这样实现(通过将其包装到结构类型中),而不是选择像Java中的原始类型实现?

结构中的附加包装是否会产生额外的性能命中?

1 个答案:

答案 0 :(得分:6)

这里的struct没有“包裹”。出于所有实际目的,System.Int32 struct 内置的基本类型,在编译器识别它们的意义上,并在处理基元类型的表达式时生成特殊指令。包装int(或任何其他struct)的唯一位置是在装箱转换期间,当您想要将int传递给需要的API时,这是必需的一个对象。

Java和C#处理原语的最大区别在于,您可以在用户定义的struct类型可以使用的地方使用C#原语,最值得注意的是,在C#泛型参数中,而Java将原语视为完全单独的一组类型。