引用类型(堆或堆栈)中定义的值类型存储在哪里?

Hem*_*jak 5 .net value-type reference-type

是在引用类型内部定义的值类型存储在堆还是堆栈上?

  1. 如果存储在堆中,那么什么时候将值类型存储在堆栈中?
  2. 如果存储在堆栈中,那么当一切都以一个值类型结束时,堆内部将发生什么?

Gab*_*abe 5

存储在堆栈上的唯一变量是函数的局部变量。对于引用类型,引用存储在堆栈上,而它引用的对象存储在堆上。对于值类型,对象本身存储在堆栈中。请注意,可以从本地函数中转义的本地变量(例如通过闭包)存储在堆上的单独数据结构中,包括可能包含的任何值类型。

换句话说,由于引用类型始终存储在堆上,因此它们包含的任何内容(甚至值类型)也存储在堆上。