C#学习笔记10-值类型和引用类型

C#学习笔记10-值类型和引用类型

值类型:int float double decimal enum struct bool char 等
引用类型:string、自定义类、数组、集合、object、接口等

值类型和引用类型的区别

1.值类型和引用类型在内存中存储的地方不一样,值类型存储在栈中,引用类型存储在堆中
2.值类型的变量直接存放实际的数据,而引用类型的变量存放的则是数据的地址,即对象的引用。

堆和栈的区别

栈是编译期间就分配好的内存空间,因此代码中必须旧栈的大小有明确的定义;局部值类型变量、值类型参数等都在栈内存中

堆是程序运行期间动态分配的内存空间,可以根据程序的运行情况确定要分配的堆内存的大小。

一张图解决

C#学习笔记10-值类型和引用类型
由此可以看出,引用类型中类型值的变换会反映到同一地址中类型变量,而值类型值的变化则是直接取代其在栈中的值