首先研究什么是值类型,什么是引用类型,两种有什么不同?
CLR支持两种类型:值类型和引用类型。.net框架参考文档已经明确指定了那种类型是值类型,那种类型是引用类型,如下图:
值类型和引用类型最根本的区别是:两者在内存中的分配位置不同,值类型(Value Type)的实例分配在线程的堆栈上,而引用类型(Reference Type)的实例总是从托管堆上分配内存。
通俗的说:值类型就是:在内存中开辟一块空间,存的是实际的值;
引用类型是:在内存中开辟一块空间,存的是地址;
附加:string类型很多人也许认为他是值类型,但他却是引用类型,但具备很多值类型的特点. -- 特殊的引用类型