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。将托管堆中的数据复制到栈中

posted @ 2019-05-22 14:22  向往的人生  阅读(414)  评论(0编辑  收藏  举报