我正在MSDN上阅读有关new
运算符的文章:
https://msdn.microsoft.com/en-us/library/fa0ab757(v=vs.120).aspx
我不明白这一段:
在堆栈上创建诸如结构的值类型对象,而在堆上创建引用类型对象(如类)。两种类型的对象都会自动销毁,但基于值类型的对象在超出范围时会被销毁,而基于引用类型的对象会在最后一次引用它们后的指定时间内销毁
粗体文字究竟是什么意思?什么是基于价值/参考类型的"对象"?这是仅包含值成员/仅引用成员的对象吗?
修改我不认为'什么是堆/堆栈'是一个合适的副本。虽然该链接线程中的所选答案信息量很大,但我仍然清楚地理解两者之间的差异 - 尽管"堆栈存储值类型,堆存储引用类型"。但我的印象是“价值类型”#39;会是int
或char
之类的东西;我没有意识到struct
包含在其中,或者struct
可以定义为"基于值类型的对象"。
答案 0 :(得分:3)
你过度思考它:
struct
class
老实说,我不知道为什么他们在段落中改变了术语;我认为这会更清楚,也是正确的:
在堆栈上创建诸如结构的值类型对象,而在堆上创建引用类型对象(如类)。两种类型的对象都会自动销毁,但是值类型对象在超出范围时会被销毁,而引用类型对象会在最后一次引用它们后的指定时间内被销毁。
也许这个解释并没有涵盖一些角落,但对大多数情况来说它应该足够好了。