在C#中查看int
类型如何实现为System.Int32 struct
,我想知道为什么这样实现(通过将其包装到结构类型中),而不是选择像Java中的原始类型实现?
结构中的附加包装是否会产生额外的性能命中?
答案 0 :(得分:6)
这里的struct
没有“包裹”。出于所有实际目的,System.Int32
struct
是内置的基本类型,在编译器识别它们的意义上,并在处理基元类型的表达式时生成特殊指令。包装int
(或任何其他struct
)的唯一位置是在装箱转换期间,当您想要将int
传递给需要的API时,这是必需的一个对象。
Java和C#处理原语的最大区别在于,您可以在用户定义的struct
类型可以使用的地方使用C#原语,最值得注意的是,在C#泛型参数中,而Java将原语视为完全单独的一组类型。