C#深入理解类型
值类型:
值类型通常存储在栈中,值类型管理由操作系统管理
引用类型:
引用类型存储在堆中由GC管理
引用类型嵌套定义值类型:
值类型嵌套引用类型:
值类型继承自ValueType,ValueType有继承自System.Object 引用类型直接继承自System.Object
值类型的内存不受GC控制,作用域结束后值类型会被操作系统自行释放,但是引用有GC来完成值类型性能能加存在优势
类型转换
隐式转换就是有低级别类型转换想高级别类型转换的过程,派生类可以隐式转换为他的父类。装箱过程就是属于这种隐式转换
显示类型转换:这种转换可能会倒是损失精度,或者出现异常
通过is和as运算符进行安全转换
int i =3
// 装箱
object obj = i;
// 拆箱
int y = obj;
代码的装箱过程式
1.分配onj内存空间
2.copy i变量的值放在内存中
3.返回值存放的地址给obj变量
拆箱过程:
1.检查o变量的值是否为null为null时发出异常,不为null检查拆箱后类型是否一直不一致异常
2。返回o变量实际数据地址
3。将托管堆中的数据复制到栈中