一、装箱与拆箱
装箱:将值类型转换为引用类型
拆箱:将引用类型转换为值类型
int n = 100; object b = n; //装箱,性能损失,将值类型转换为引用类型 int c = (int)b;//拆箱,将引用类型转换为值类型
判断是否可以拆装箱:看两种类型是否是继承关系,有关系则可能,无则不可能。
//非继承,没有发生装拆箱操作 string str = "12345"; int a = Convert.ToInt32(str);
二、值传递与引用传递
视频链接https://www.bilibili.com/video/BV1FJ411W7e5?p=148
值类型:int、double、float等
引用类型:object、string、类、结构、接口、自定义
值类型通常被分配到堆栈上,引用类型则分配到托管堆上,值类型由操作系统负责回收,引用类型则由GC负责。
值类型的变量和实际地址都储存在堆栈上,而引用类型的变量(即内存地址)在堆栈中,实际数据储存在托管堆中。