.NET中的值类型内部的引用类型

时间:2017-01-11 19:32:18

标签: c# .net

结构是C#中的值类型,string是引用类型。我知道它们的内存分配和映射的区别,但我不确定C#引用类型是如何存储在值类型中的。假设我在以下结构中有一个字符串。 如果在堆上创建了Structure内部的引用类型,那么当Structure作为参数传递给函数时,编译器如何管理堆上的数据。

是否会在堆栈或堆上创建字符串?

如果我将Struct Point 的对象传递给函数.net如何管理Struct里面的 PointC 对象。如果在堆上创建了PointC,那么将stuct传递给函数将具有与类相同的记忆吗?

   public class PointC
    {
      ...
      ...
    }
   public struct Point
    {
      PointC obj;
    }

1 个答案:

答案 0 :(得分:1)

将在堆栈上创建引用(或者更具体地说,它将是结构的位置)。

引用将具有默认值(null),因此不会在struct构造中创建String对象。

当您通过字符串构造函数分配字符串时,将在堆中创建String对象和字符串缓冲区。