已经清楚的是since the structs are value types in c#, they are stored on stack
,a class object is stored on the heap
(它的参考,当然存储在堆栈上).
警告:( 是的,这可能并非总是如此.感谢@Jon进行更正)但在大多数情况下,是的!
但是,怎么样a class one of whose member is of type struct
?现在,内存模型将如何?
顺便说一句,我怎么检查是否存在对象驻留在stack
或heap
?
好的.一些假设:
这个类是函数内的本地.
结构member
不是一个variable
.(感谢更正.)
Roy Dictus.. 6
类本身将是一个引用类型,因此它的实例将保留在堆上.
这是一个属性struct
是实例(即,对象的)的一个组成部分,因此也将被保持在堆上,就像int
与enum
该对象的属性.
注意:将有到无的参考struct
属性,就像有到无的引用int
和enum
属性.