CLR支持两种基本类型:值类型和引用类型
那么又有哪些数据类型是值类型的 又有哪些数据类型是引用类型的呢?请看下面的简单归纳:
值类型:
所有的数值类型(long int short byte ulong uint ushort sbyte decimal double float)
bool
枚举(enum)
结构(struct)
引用类型:
string
数组
类(class)
接口(interface)
引用类型和值类型的划分依据: 他们在内存中的存储方式不同 内存最重要的两部分 一部分是栈空间 一部分是堆空间 值类型的变量是存储在栈空间中 而引用类型的变量是将值存储在堆空间中
下面我们来看看值类型和引用类型在内存中是如何存储数据的
上面是值类型和引用类型存储的示例图
可以看见值类型的变量 是将值和变量直接存储在栈空间的 而引用类型的变量是将变量存储在栈空间 却降值存储的堆空间中 引用变量在栈空间内存储的是 其值的地址而已
关于变量分赋值
值类型的变量赋值: 重新开辟一块栈空间 将值直接复制一份过去
引用类型的变脸赋值: 在栈空间重新开辟一个空间 将原有的值所在的地址 存放在新的引用变量中保存起来
时间: 2024-10-29 19:06:46