2010-01-21 72 views

回答

7
  • 对于引用类型:在堆上
  • 对于值类型:堆栈为局部变量和方法参数上,或在堆上用于参考类型的成员
+2

有一些边缘例;迭代器块中的局部变量或捕获的变量实际上存储在堆中。同样,堆上的*本身*(直接间接)堆中的成员也在堆中。当然,盒装值也在堆上。 – 2010-01-21 16:20:54

+0

在http://www.kirupa.com/net/stacks_heaps_pg1.htm中提供了一个很好的图形视图 – balalakshmi 2010-01-21 16:22:17

0

的对象被存储在堆在C#也是如此。

5

C#语言没有指定对象或值的存储位置。它只是定义了引用类型和值类型的语义。

Microsoft .NET CLR存储堆栈上的本地变量以及堆上的引用类型(对象)实例和非本地值类型的实例所包含的值(值类型的实例)。但是,如前所述,只要符合C#语言规范定义的值和引用语义,C#语言的其他实现就可以随意存储它们所希望的内容。

0

引用类型。

默认存储在堆栈上的值类型。

值类型也可以存储在堆在几种情况:

  1. 在拳击(铸造值类型的接口,向下转换值类型为对象等)。
  2. 如果值类型是参考类型的成员
  3. 如果值类型在闭合使用
相关问题