结构是C#中的值类型,string是引用类型。我知道它们的内存分配和映射的区别,但我不确定C#引用类型是如何存储在值类型中的。假设我在以下结构中有一个字符串。 如果在堆上创建了Structure内部的引用类型,那么当Structure作为参数传递给函数时,编译器如何管理堆上的数据。
是否会在堆栈或堆上创建字符串?
如果我将Struct Point 的对象传递给函数.net如何管理Struct里面的 PointC 对象。如果在堆上创建了PointC,那么将stuct传递给函数将具有与类相同的记忆吗?
public class PointC
{
...
...
}
public struct Point
{
PointC obj;
}
答案 0 :(得分:1)
将在堆栈上创建引用(或者更具体地说,它将是结构的位置)。
引用将具有默认值(null),因此不会在struct构造中创建String对象。
当您通过字符串构造函数分配字符串时,将在堆中创建String对象和字符串缓冲区。