什么是基于价值类型的"对象"?

时间:2017-02-09 12:57:32

标签: .net

我正在MSDN上阅读有关new运算符的文章:

https://msdn.microsoft.com/en-us/library/fa0ab757(v=vs.120).aspx

我不明白这一段:

  

在堆栈上创建诸如结构的值类型对象,而在堆上创建引用类型对象(如类)。两种类型的对象都会自动销毁,但基于值类型的对象在超出范围时会被销毁,而基于引用类型的对象会在最后一次引用它们后的指定时间内销毁

粗体文字究竟是什么意思?什么是基于价值/参考类型的"对象"?这是包含值成员/仅引用成员的对象吗?

修改我不认为'什么是堆/堆栈'是一个合适的副本。虽然该链接线程中的所选答案信息量很大,但我仍然清楚地理解两者之间的差异 - 尽管"堆栈存储值类型,堆存储引用类型"。但我的印象是“价值类型”#39;会是intchar之类的东西;我没有意识到struct包含在其中,或者struct可以定义为"基于值类型的对象"。

1 个答案:

答案 0 :(得分:3)

你过度思考它:

  • "基于价值类型的对象"通常意味着struct
  • "基于参考类型的对象"通常意味着class

老实说,我不知道为什么他们在段落中改变了术语;我认为这会更清楚,也是正确的:

  

在堆栈上创建诸如结构的值类型对象,而在堆上创建引用类型对象(如类)。两种类型的对象都会自动销毁,但是值类型对象在超出范围时会被销毁,而引用类型对象会在最后一次引用它们后的指定时间内被销毁。

也许这个解释并没有涵盖一些角落,但对大多数情况来说它应该足够好了。