簡體   English   中英

對象駐留在c#中的哪個位置?

[英]where does object reside in c#?

我是一名java程序員,我知道java對象存儲在堆上。 只是為了好奇,想知道對象在c#中的位置。

  • 對於引用類型:在堆上
  • 對於值類型:在堆棧上用於局部變量和方法參數,或在堆上用於引用類型的成員

C#語言未指定應存儲對象或值的位置。 它只是定義了引用類型和值類型的語義。

Microsoft .NET CLR存儲堆棧上的局部變量包含的值(值類型的實例)以及堆上的引用類型(對象)和非本地值類型的實例。 但是,如前所述,C#語言的其他實現可以按照自己的意願自由存儲,只要它們符合C#語言規范定義的值和引用語義即可。

詳細解釋,

.NET中的C#堆(堆)與堆棧(第一部分)作者:Matthew Cochran 2006年1月14日http://www.c-sharpcorner.com/UploadFile/rmcochran/csharp_memory01122006130034PM/csharp_memory.aspx

對象也存儲在C#中的堆上。

存儲在托管堆上的引用類型。

默認情況下,值類型存儲在堆棧中。

在幾種情況下,值類型也可以存儲在堆上:

  1. 在裝箱期間(將值類型轉換為接口,將值類型向下轉換為對象等)。
  2. 如果值類型是引用類型的成員
  3. 如果值類型在閉包中使用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM