【发布时间】:2012-08-30 15:11:36
【问题描述】:
我正在阅读一些关于堆栈与堆的文章(只是为了更新我的知识)。
据我所知,如果我在引用类型(类)中创建值类型,那么值类型也将存储在堆中。因为值类型的存储位置取决于它的创建位置。
但是,当我们创建应用程序(例如 WPF/Silverlight)时,当我们创建 UserControl、ViewModel 时,它们不也是一个类(一个对象)一个引用类型吗?
所以我有点想知道,所以无论我在 UserControl 和 ViewModel 中创建什么,也会在 Heap 中?
【问题讨论】:
-
只有值类型可以存储在堆栈中。由于您提到的对象不是值类型,因此它们将始终存储在堆中。
-
谁在乎呢?无论如何,你不应该介意这样的实现细节......
-
@H.B.我刚刚回答了我之前被问到的关于堆与堆栈的面试问题......我真的很想知道为什么人们会问这个......
-
@KingChan 我认为任何关于堆栈与堆的面试问题的最佳答案,如果它是针对 .NET 工作的,就是讨论为什么它不重要,真正的问题是复制语义.这确实表明您知道自己在说什么,因为堆栈和堆对于 .NET 来说并不重要。
-
@KingChan 也请注意,许多面试官不知道这是一个糟糕的问题,并且会与你争论。不过,这可能是这份工作的一个坏迹象;)
标签: c# wpf silverlight memory-management heap-memory