值类型何时存储在堆栈(C#)中?
当我阅读下一本“价值和参考类型”一书时,我想到一个问题:“什么时候价值类型存储在堆栈中”? 导致程序员无法从类中初始化任何值类型。 当我们在类中初始化一些值类型的变量时,原因是变量存储在堆中。
我的问题是:何时将值类型存储在堆栈中?
首先,你需要知道的非常罕见,但基本上,价值类型被存储在任何他们拥有的地方。
当它们是线程执行流程的一部分时,它们被存储在堆栈中,这可能意味着:
ref
或out
)仅仅是一个特例 在以下情况下,它们存储在堆上(作为对象的一部分):
object
, dynamic
, Enum
, ValueType
(是: ValueType
是引用类型; fun,eh?), ISomeInterface
等) 我的问题是:何时将值类型存储在堆栈中?
关于价值类型的真相:
[I]在桌面CLR的C#的微软实现中,当值是局部变量或临时值时,值类型被存储在堆栈上,该临时变量不是lambda或匿名方法的封闭局部变量,方法体不是迭代器块,并且抖动选择不注册该值
第一次在您的问题上进行的网络搜索让您了解Eric Lippert关于价值类型的真相,它以最重要的部分开始:它几乎总是不相关的。 那么,你为什么想知道? 你会有不同的编程吗?
无论如何:
事实是:分配机制的选择只能与存储的已知所需生存期进行。
链接地址: http://www.djcxy.com/p/78893.html