1.大多数的数据类型都是值类型,值类型是存放在堆栈上的,堆栈是基于先进后出,向下填充即从高内存地址向低内存地址填充,堆栈有非常高的性能,但对于有些类型来说,使用起来还不是很灵活,因为有些类型需要在内存中存放很长时间
2.string属于引用类型,但是不可以被继承,因为他是抽象类,一般需要new的方法都是引用类型,引用类型需要使用托管堆,托管堆与C++使用的堆是不同的,它在垃圾收集器的控制下工作,与传统的堆相比有很显着的性能优势,引用类型的的存储方式是在堆栈上存放地址,在堆中存放实际的对象,与堆栈不同,堆上的内存是向上分配的,所以自由空间在上面
从上面可以看出,建立引用变量比建立值变量要复杂得多,且不能避免性能的降低,在一个引用变量的值赋予另一个相同类型的变量时,有两个引用内存中同一个对象的变量,删除其中一个引用变量时,只会删除堆栈上的地址,不会删除堆中的对象,只到程序停止或垃圾回收器回收