值类型包括几本简单的数值类型,布尔类型,字符类型,结构类型,枚举类型,而引用类型有object类型,string类型,dynamic,class类型,接口,委托,数组类型。值类型用来存储数据值,在栈控件中分配空间和存储数据值,拷贝复制值类型就相当于把整个数据值拷贝复制了,引用类型是在栈空间中存储引用部分(就是引用堆空间的地址),在堆空间中分配引用类型具体对象的空间,拷贝复制引用类型其实是拷贝了栈空间的地址,特别需要注意的是如果一个类型(像自定义类)中有值类型成员和函数成员,那么在栈中存储的是整个自定义类型的地址,而在堆空间中开辟空间,在堆开辟的空间中对于函数成员又是一个引用类型所以也会把引用的地址和具体对象开辟的空间分开,就相当于一个引用类型里面又嵌套了一个引用类型。 |