首先,请阅读Eric Lippert撰写的有关The Stack is an Implementation
Detail的文章。遵循“关于值类型的真相”。至于你的具体问题
有时在堆上分配结构实例吗?
是的,它们有时分配在堆上。关于何时可以在堆上分配它们的例子很多。如果将它们装箱,或者它们是类中的字段,或者它们是数组的元素,或者它们是已关闭的值类型的变量的值,等等。
但是,如果我将struct-values放在列表中并返回该值,会发生什么情况?元素得以生存。
您正在考虑正确的方法,这是可以在其中分配值类型的显着点之一。有关更多详细信息,请参见我在“关于值类型的真相”中提到的第二篇文章。但是,请记住,堆栈是实现细节。关键要点是,您真的不需要担心这些东西。您应该关注值类型和引用类型之间的语义差异。



