为什么c#中空类的大小不为零?

本文关键字:为什么 | 更新日期: 2023-09-27 17:53:18

从我学习oop的第一天起,我就知道类是一个不需要任何空间的逻辑实体。

但是今天我正在阅读关于内存管理的文章,发现c#中Class的大小不是0。类实例的大小由:

  1. 实例中实际存储的数据量
  2. 之间所需的填充内存管理使用的一些额外的内部数据

由于空类将没有任何数据,所以第一个点将是0,但其他两个点在这里是什么?为什么空类的大小不为零?

为什么c#中空类的大小不为零?

  • "0"本身占用一些空间来存储-如果您将其存储为4字节数,它将占用4字节!
  • 当然,这些关于类的信息必须占用内存,否则你从哪里读取它?

在MSDN上定义的c#"类"

类是一种构造,它使您能够通过将其他类型、方法和事件的变量组合在一起来创建自己的自定义类型。一个类就像一张蓝图。它定义了类型的数据和行为。如果类没有声明为静态,客户端代码可以通过创建对象或实例来使用它,这些对象或实例被分配给一个变量。该变量保留在内存中,直到对它的所有引用都超出作用域。那时,CLR将其标记为有资格进行垃圾收集。如果将类声明为静态,则内存中只存在一个副本,并且客户端代码只能通过类本身访问它,而不是实例变量。