Bor*_*ary 6 c# stack heap-memory
我可以想象这个问题已被问过几千次了,但是我找不到答案的运气也不多,而且这更多是出于好奇而不是需要.
深入研究C#的具体细节,我想知道,因为对象存储在堆中,堆中存储的对象中的值类型是否也被放置在堆栈中?
安德鲁哈尔是对的.有关详细信息,请参阅Eric Lippert的博客文章:
我对"值类型进入堆栈"的神话感到不安......通常说错误:语句应该是"值类型可以存储在堆栈中",而不是更常见的"值类型总是存在存储在堆栈中".
它们与对象本身一起存储在堆上。考虑这个问题的一个好方法是,当一个对象(具有值类型作为其状态的一部分)在堆上分配时,它的值类型也必须存在在那里,否则一旦堆栈展开,这些值类型就会消失用于创建该对象的代码。