Struct on the heap?

本文关键字:heap the on Struct | 更新日期: 2023-09-27 18:10:04

这里是:

class SimpleDateStructureDemo
{
  struct Date
  {
    public int year;
    public int month;
    public int day;
  }
  static void Main()
  {
    ...
  }
}

然后我看到一个例子,说对象是在堆上分配的:

Date dateMoonWalk = new Date();

我认为类是ref类型,而结构是值类型。最后,您可以通过使用new在堆上创建一个结构类型对象,对吗?

Struct on the heap?

你可以通过new在堆上创建一个结构类型对象,对吗?

不,如果你在Main中这样做,一般来说,它不会被分配到堆上。你可以通过多种方式在堆上分配一个结构,包括在类中使用它作为一个字段,在闭包中使用它,等等。

new Date语法只是将结构初始化为它的默认值,但实际上并不改变它的分配方式或位置。

new在这种情况下与堆上的分配无关

new操作符还用于值类型调用默认构造函数

http://msdn.microsoft.com/en-us/library/fa0ab757.aspx