值类型包括整数类型、浮点类型、bool类型、char和结构(struct)、枚举(enum)
引用类型包括objet 、string、class、interface(接口)、delegate(委托)、array(数组)
值类型只需要一段单独的内存,用于存储实际数据。一般放在 栈 中。
引用类型需要两段内存。第一段存储实际数据,它总是位于 堆 中。第二段是一个引用(可以理解为指针),指向数据在堆中的存放位置。
上面说的是数据不是另一个类型的成员时如何分配存储,如果要是另一个类型的成员?
例如:有一个类class(引用类型) ,它有一个值类型和一个引用类型成员。
引用类型对象的数据部分 始终 存放在堆里。
值类型对象,或引用类型数据的引用部分可以放在堆里、也可以存放在栈里,这依赖实际环境。
注意(对于引用类型的任何对象,它所有的数据成员都存放在堆里,无论它们是值类型还是引用类型)
有讲错的地方请指出,谢谢 |