对象驻留在c#中的哪个位置?

时间:2010-01-21 14:54:09

标签: c# java

我是一名java程序员,我知道java对象存储在堆上。只是为了好奇,想知道对象在c#中的位置。

5 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:5)

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

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

答案 2 :(得分:1)

详细解释,

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

答案 3 :(得分:0)

对象也存储在C#中的堆上。

答案 4 :(得分:0)

存储在托管堆上的引用类型。

默认情况下,值类型存储在堆栈中。

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

  1. 装箱期间(将值类型转换为接口,将值类型向下转换为对象等)。
  2. 如果值类型是引用类型的成员
  3. 如果值类型在闭包中使用