2010-01-21 77 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. 如果值類型在閉合使用
相關問題