struct
进行任何“包装”。实际上,System.Int32
struct
可以被认为是内置的原始类型,因为编译器识别它们并在处理原始类型表达式时生成特殊指令。唯一需要包装一个int
(或其他任何struct
)的地方是在装箱转换期间,当您想要将int
传递给接受对象的API时,这是必需的。int
进行boxing/unboxing所产生的开销。但只有在将int
强制转换成object
时才会发生这种情况。 - Tim Schmelterint
那样创建这样的结构体,其中包含 int
字段。那是特殊情况。@TamasIonut - M.kazem Akhgarystruct
只是所有值类型的通用名称,包括原始类型。编译器对于原始类型知道足够多的信息,当它们出现时就会生成不同的CLR代码,而不是用户定义的struct
。例如,编译器充分利用了内置类型的CIL支持。 - Sergey Kalinichenkoint
唯一特殊的地方就是编译时有字面量支持。除此之外,你可以将其实现为用户定义的 struct
。字面常量是唯一具有特殊编译器支持的内容。 - Servy
List<int> list
,123.ToString();
等等。奥卡姆剃刀原则:整数是一个类,而不是特殊的“原始类型”。 - Dmitry Bychenko