C#中数据类型按照数据在内存中的存储位置分为: 值类型 和 引用类型.
值类型包含:long int short byte ulong uint ushort sbyte float double decimal char bool 枚举 结构体
引用类型包含:string 类 数组
内存有两个重要的组成部分:栈空间 和 堆空间 值类型的数据存储在内存的栈空间中,引用类型的数据存储在内存的堆空间中.
如上图,值类型的数据,直接存储在栈空间中. 变量a存储的值为10. 引用类型p在栈空间存储的是Person对象在堆空间中的地址,指向Person对象.
这就导致了,变量间的赋值,值类型是值与值的拷贝,将a变量的值赋值给b变量,然后改变b变量的值,对a变量没有影响. 但是引用类型之间的赋值,拷贝的是地址.比如,把p变量的值(注意:这里是地址)赋值给变量q.
这时,变量p q 就同时指向了同一个对象,通过修改p q 任何一个变量的值,另一个变量会受影响的原因.