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

时间:2014-03-26 07:25:01

标签: c# .net

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

但今天我只是阅读有关内存管理的内容,发现C#中Class的大小不是0.类实例的大小由下式确定:

  1. 实例中实际存储的数据量
  2. 值之间需要填充
  3. 内存管理使用的一些额外内部数据
  4. 由于Empty类没有任何数据所以第一点将是0但是其他两点是什么? 为什么空类的大小不为零?

1 个答案:

答案 0 :(得分:2)

  • “0”占用一些空间来存储 - 如果你把它存储为一个4字节的数字,它需要4个字节!
  • 当然,关于课程的这些信息必须占用内存,否则你会从哪里阅读?

MSDN上定义的C#“类”

  

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